www 被大佬们|

wscqwq

园龄:2年粉丝:2关注:3

ApproximateEqualization

[ABC307G] Approximate Equalization

观察操作发现:i=1nai 不会改变。

也就是说,最后的数列中的每个数一定是 Sn 或者 Sn+1(其中S=i=1nai

因为序列和是确定的,所以可以得出最终值为这两类数的分别有 nS+n×SnSn×Sn 个。

接下来考虑 dp

fi,j 表示前 i 个数中有 j 个第二类数和 ij 个第一类数的最小花费。

考虑转移:最主要的问题是它将相邻的两个数绑在一起操作。

我们现在只考虑对于前 i+1 个数的操作。因为总和不变,所以我们能得到这样一个式子,其中 P 为改变后的 ai+1

P=k=1i+1akj×(Sn+1)(ij)×Sn

应该不难懂。就是前 i+1 个数的和减掉前 i 个数的组成部分(可以由当前 dp 状态推导出来)。

接下来就可以转移啦:

fi+1,j=min{fi+1,j,fi,j+|PSn|}

fi+1,j+1=min{fi+1,j+1,fi,j+|P(Sn+1)|}

复杂度 O(n2)。初值 f={inf},f0,0=0

S 为负时要注意一些细节。

这种方法抛开了原题的操作,用另外一种方式考虑问题。

AC

本文作者:wscqwq

本文链接:https://www.cnblogs.com/wscqwq/p/17589856.html

版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 2.5 中国大陆许可协议进行许可。

posted @   wscqwq  阅读(25)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示
评论
收藏
关注
推荐
深色
回顶
收起