小车的颜色

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

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

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

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

于是有

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

update 2024.6.29

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

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

update 2024.7.26

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

posted @   最爱丁珰  阅读(4)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
点击右上角即可分享
微信分享提示