【Codeforces 536B】Tavas and Malekas

536B Tavas and Malekas

题意:给一个字符串,现在要把这个字符串在一个大空字符串中放多次,每一次的开头在\(p_i\)位置,然后现在问这个大字符串有多少种情况。

思路:首先如果两个字符串放置的位置有重叠,重叠部分必须相等。

那么就是一个前缀要等于一个后缀。

所以果断z function。这样的话写起来比kmp快。。。

然后就可以对于每两个连续出现判断这些重复部分的交叉状况,同时算上所有的非自由的字符,最后求出\(2^{自由字符数量}\)即可。

猜你喜欢

转载自www.cnblogs.com/denverjin/p/10896295.html