#P15038. 「chaynOI R2 T3」合并同类项

    ID: 16834 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 显示难度提高 上传者: 标签>动态规划 DPO2优化其它技巧随机化

「chaynOI R2 T3」合并同类项

题目描述

flow 有一个长度为 nn 的整数序列 {a}\{a\},和一个常数 kk。

flow 想要简化这个序列使得其只剩下恰好一个数,他可以进行 n−1n-1 次以下两种操作:

  1. 花费 xx 的代价,选择 1≤i<n1\le i<n,记 s=(ai+ai+1) mod ks=(a_i+a_{i+1}) \bmod k,将 ai←sa_i\gets s,删去 ai+1a_{i+1}。
  2. 花费 yy 的代价,选择 1≤i≤n1\le i\le n,满足 ai=0a_i=0,删去 aia_i。

操作后令 n←n−1n\gets n-1。

flow 想要让最终代价 costcost 最小。请你找出这个值。

本题的 {a}\{a\} 生成方式较为特殊,具体参见数据范围。

输入格式

第一行四个整数 n,k,x,yn,k,x,y。

第二行 nn 个整数,表示 aia_i。

输出格式

一行一个正整数 costcost。

7 40 2 1
10 20 30 0 30 20 10
10

提示

样例 1 解释

一种可能的方案为:

  1. 使用操作 22,选择位置 44,序列变为 {10,20,30,30,20,10}\{10,20,30,30,20,10\},总花费为 11。
  2. 使用操作 11,选择位置 22,序列变为 {10,10,30,20,10}\{10,10,30,20,10\},总花费为 33。
  3. 使用操作 11,选择位置 22,序列变为 {10,0,20,10}\{10,0,20,10\},总花费为 55。
  4. 使用操作 22,选择位置 22,序列变为 {10,20,10}\{10,20,10\},总花费为 66。
  5. 使用操作 11,选择位置 11,序列变为 {30,10}\{30,10\},总花费为 88。
  6. 使用操作 11,选择位置 11,序列变为 {0}\{0\},总花费为 1010。

可以证明,costmin⁡=10cost_{\min}=10。

数据范围

本题采用捆绑测试。

对于 100%100\% 的数据,1≤n≤60001\le n\le6000,2≤k≤1042\le k \le 10^4,0≤ai<k0\le a_i<k,1≤x,y≤1051\le x,y \le 10^5,保证 aia_i 在 [0,k)[0,k) 内独立均匀随机生成。

  • Subtask1(10pts):n≤10n\le10。
  • Subtask2(15pts):n,k≤80n,k\le80。
  • Subtask3(25pts):n≤500n\le500。
  • Subtask4(10pts):k≥9000k\ge 9000。
  • Subtask5(40pts):k≥400k\ge400。