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

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

「chaynOI R2 T3」合并同类项

题目描述

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

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

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

操作后令 nn1n\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\% 的数据,1n60001\le n\le60002k1042\le k \le 10^40ai<k0\le a_i<k1x,y1051\le x,y \le 10^5,保证 aia_i[0,k)[0,k) 内独立均匀随机生成。

  • Subtask1(10pts):n10n\le10
  • Subtask2(15pts):n,k80n,k\le80
  • Subtask3(25pts):n500n\le500
  • Subtask4(10pts):k9000k\ge 9000
  • Subtask5(40pts):k400k\ge400