A.传送门:Hdu 5763 Another Meaning
题意:给你两个字符串A和B(len<=100000),如果A中有和B相同的子串,则可以用’*’替换A中的这个子串,A中相邻的替换子串不能重叠
问替换之后A可以有多少种不同的表示
思路:经过分析可以发现,如果可以替换,那么替换之后的每个A串都是不相同的
然后从后往前遍历,维护一个后缀和,dp表示这个点之后能产生的不同的子串的方案数
对于每个位置有两种情况:
1.不能匹配不会产生新的答案 dp[i]=dp[i+1]
2.可以匹配:dp[i]=dp[i+lb]+dp[i+1]