小车的颜色

可以尝试推导一下,是推不动的,但是又没有什么更好的状态设计的方法,这个时候可以尝试分摊费用

我们先随便写一个序列,考虑费用是怎么产生的,然后怎么分摊费用给每个单元

如图,箭头的长度之和就是总费用

所以一个很显然的分摊费用的方法就是:对每一个箭头,把他跨过的位置对答案的贡献加一(也就是每个位置产生的费用就是跨过这个位置的箭头数量)

于是有

然后考虑怎么计算\(cnt\),方法挺多的,可以自己先想一下

update 2024.6.29

上面这个预处理的方法严重怀疑超时,因为\(n\)的规模高达\(5000\)

实际上可以\(O(1)\)转移,当内层循环是\(j\)时,当\(j+1\)后,至多一个字符的状态被改变,所以随便开一个变量记录一下满足条件的字符的总数\(tot\)\(j+1\)\(tot\)要么加一要么减一要么不变

update 2024.7.26

利用类似思想证明下界的题目

posted @ 2024-01-29 17:35  最爱丁珰  阅读(2)  评论(0编辑  收藏  举报