做生产计划类的网站,蝉知 wordpress,沈阳新闻今天头条新闻,厦门人才网招聘最新信息序列计数
对于一个小写字母的序列每次可以将相邻两个不同的小写字母都变为二者之一#xff0c;可以进行无限次这样的操作#xff0c;求解可以产生多少种不同的序列。
首先我们不能考虑操作#xff0c;而是考虑合法序列#xff0c;显然最后会形成若干个区间#xff0c;然…序列计数
对于一个小写字母的序列每次可以将相邻两个不同的小写字母都变为二者之一可以进行无限次这样的操作求解可以产生多少种不同的序列。
首先我们不能考虑操作而是考虑合法序列显然最后会形成若干个区间然后每个区间必然是对应了最初的一个位置并且需要满足位置的相对顺序不变所以问题等价于统计本质不同的满足相邻字符不同的子序列个数然后利用组合数直接计算。
那么考虑动态规划如果采用求子序列个数的dp发现无法很好处理相邻字符不同但是如果利用子序列自动机就很好处理这样dpi,jdp_{i,j}dpi,j表示当前匹配到i这个字符然后长度为j的方案数然后每次O(26)O(26)O(26)刷表法转移总复杂度O(26n2)O(26n^2)O(26n2)。 这个方法的核心思路就在于利用了自动机优化dp处理一些难以处理的限制。
注意细节
数组开小了。。。这就是我小数据对拍都过了但是大数据全WA的原因我还以为是取模的问题。。。暴力哈希的时候单模数比不过ULL自然溢出很容易就会发生冲突。
考虑正解只是在原来的基础上进行优化发现使用填表法效率更高每个点对应的转移是一段区间所以可以前缀和优化。