摘要:
http://codeforces.com/problemset/problem/17/C 题目中给出一个仅含有a,b,c的字符串,已经两种操作每次选出任意两个相邻的字符,用第一个覆盖掉第二个或者反之,最后询问不考虑操作次数,最终有多少种不同的序列其中a,b,c三种字符两两间相差不超过1个。 很有趣的动态规划,一开始一直在考虑边构造目标串边dp,考虑前i个含有多少a,b,c之类都找不到可以在时限内通过的办法,后来重新审题发现可以重定义其两种操作,可以这样等价的描述原串通过这两种操作可以到达的目标串,将目标串相邻的重复元素去掉,剩下的元素所组成的序列,一定是原串的子序列!重定义之后很容易想到一种 阅读全文