题目

思路来源
daydreamers群友
kmp的正确用法,或者说border理论及其应用 - ShanLunjiaJian's Blog
https://www.luogu.com/article/e08ebmz6 ix35 字符串好文
题解
离线的话可以考虑用exkmp(Z函数),但是本题强制在线,所以只能考虑用kmp了
根据题目要求的式子,假设当前匹配到了i,也就是从i-1转移到i的时候,
是需要考虑增量贡献的,也就是新增了一个a[i]的时候,
考虑哪些数组b的位置能与其形成(i,j)对的贡献
推导不难发现,满足[x,i]与[1,i-x+1]完全相同的x,是有贡献的x
暴力的做法是将这些x找到,然后将这些b[x]相加得到sum,增量贡献就是sum*a[i]
但是因为i是动态变化的,x的集合也是在动态变化的,现算复杂度难以满足需求
所以考虑用总的[1,i]的b之和,减去已经没贡献的,也就是[x,i]与前缀的lcp小于i-x+1的,
没贡献的x,一定会在某个x<=j<=i的位置变得没有贡献,只被减一遍之后,后面就不用减了

最低0.47元/天 解锁文章
553

被折叠的 条评论
为什么被折叠?



