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 @ 2024-08-12 15:54  最爱丁珰  阅读(9)  评论(0)    收藏  举报