关于SAM上统计各个状态在串中的出现次数,主流做法是在先把根到 S[1...n] 路径上的所有状态的 cnt 初始化为 1,然后在后缀链接构成的树上进行累加(即 cnt[u]←cnt[u]+link[v]=u∑cnt[v])。
而某些题解(如)也有另一种做法,从 S[1...n] 状态不断往回跳 link 至根节点,把途径的所有状态的 cnt 初始化为 1,然后在转移边构成的DAG上进行累加(即 cnt[u]←cnt[u]+trans[u][c]=v,c∈Σ∑cnt[v])。
第二种做法也是正确的吗?如果是,和第一种相比有哪些优劣?