CF1860D

原题

翻译

补题的时候想了半天交换后对01和10个数的影响,写了半天的dp才发现前面的修改会影响0和1的个数(我是shabi)

不过我感觉应该还是可做的

直接说正解。首先显然我们不需要同时记录0的个数和1的个数,因为知道一个可以通过icnt得到另一个

仔细一想,我们其实也不需要同时记录cnt01cnt10的个数。因为原题的操作是交换,所以总的0和1的个数是不会改变的,而且容易得到如果cnt01=cnt10,则cnt01=cnt10=cnt0×cnt12

所以我们可以设dpi,cnt0,cnt01表示前i个数有cnt0个0,cnt01个01的最少交换次数

容易得到递推柿:

(1)dpi,cnt0,cnt01dpi1,cnt01,cnt01 (ai=0)(2)dpi,cnt0,cnt01dpi1,cnt0,cnt01cnt0+1 (ai=0)(3)dpi,cnt0,cnt01dpi1,cnt0,cnt01cnt0 (ai=1)(4)dpi,cnt0,cnt01dpi1,cnt01,cnt01+1 (ai=1)

最终答案即为dpn,cnt0,cnt0×cnt12

总复杂度O(n4)

posted @   FOX_konata  阅读(22)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
点击右上角即可分享
微信分享提示