E. Wish List
假设你需要选择 \(B_1,B_2,..,B_k\) 这 \(K\) 个元素编号。
假设当前你选择 \(B_i\) 元素,且前面 \(i-1\) 个元素 \(B_1,B_2,...,B_{i-1}\) 选择了 \(x\) 个(\(0\leq x\leq i-1\)),那么选择代价就为 \(A_{B_i}+C_{B_i-x}\)。
那么对于 \(x\) 从 \(0\) 到 \(i-1\) 的最优代价就为:\(A_{B_i}+cost(B_i,i-1)\)。其中 \(cost(i,j)=\min\{C_{i-j},C_{i-j+1},...,C_i\}\)。
则总代价为 \(\sum ^{k}_{i=1}(A_{B_i}+cost(B_i,i-1))\)。
但是现在的问题是你并不知道你需要选择哪些数(你还可以选择 X 数组外其他的数),则需要 dp 进行解决。
定义 \(dp_{i,j}\) 表示前 \(i\) 个数买了 \(j\) 件商品的最小代价。
如果选择第 \(i\) 个数,\(dp_{i,j}=\max\{dp_{i,j},dp_{i-1,j-1}+A_i+cost(i,j-1)\}\)
如果不选择第 \(i\) 个数,\(dp_{i,j}=\max\{dp_{i,j},dp_{i-1,j}\}\)
最后求答案,输出 \(\max\{dp_{n,i}\}(m\leq i \leq n)\)。
标签:AtCoder,Beginner,288,max,选择,leq,cost,代价,dp From: https://www.cnblogs.com/stOtue/p/17099899.html