题意
给出一棵(n)个节点的字符串树,每个节点都是长为(x)字符(c)的字符串,父亲与儿子的(c)不同,每个点代表一个以根为首以其结尾的字符串,对于字符串(S),(f(S)=sum fail_i),(fail_i)为(kmp)的失配指针,求每个点的(f(S))。(n,xle 10^5)
做法
性质:父亲与儿子的(c)不同
则把(fail_i)钦定不能在节点中间
该节点长度为(x)的(f)不一定都是(fail_i)产生过来的贡献,因为原来的(fail_i)的定义是最长的
如果暴跳(fail),由于是一棵树,所以复杂度不能均摊,但(fail)如果大于原串的一半了说明有周期,直接跳到第一个就好了