蒟蒻刚刚看懂后缀自动机,但是有一个小地方的复杂度一直不理解。
这个地方为什么是 O(n)O(n)O(n) 的(来自第二篇题解):
for(;p&&dian[p].ch[c]==q;p=dian[p].fa)dian[p].ch[c]=nq;
如果我们现在是修改了 ppp 的 ch[c]ch[c]ch[c] ,以后又修改了 fa[p]fa[p]fa[p] 的 ch[c]ch[c]ch[c] ......... 他们的赋值都是要一直访问整条树上的链的,那复杂度不是 O(n2)O(n^2)O(n2) 的吗?