Make it Alternating

赛时用的DP,但是转移有一点点想不清楚

f[i][0/1]表示前i个字符,以0/1结尾的最小删除数目,g[i][0/1]表示前i个字符,在达到以0/1结尾的最小删除数目的前提下的方案数

然后就会发现此时的g比较难转移,我们必须要将删除字符转换为保留字符,这样的话就可以设g[i][0/1]表示前i个字符,在达到以0/1结尾的最长保留字符的前提下的方案数,这样就要好转移得多

最后方案数要乘以一个阶乘。但是实际上,从样例的解释来看,他的方案数的每一个位置不是字符串的位置,而是此时已经经过前面的删除的剩下的字符串的位置,这个时候就还要证明两者一一对应才可以直接乘以阶乘,然后官方题解却没有证明,这个感觉好像还是比较难证明的

但是更好的解法其实是官方题解,注意这种分块的操作,已经遇到了好多次啦

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