$SAM$ .
对一个串建 $SAM$ ,把第二个串放到 $SAM$ 上去匹配.
到达一个状态 $x$ 时, $x$ 和它的所有祖先的匹配次数都会 $+1$ ,最后从下到上去更新就可以了.
匹配成功时,对每个祖先贡献为 $cnt\cdot |Right|\cdot (maxlen-minlen)$ .
但需要注意对自己的贡献,串长不一定能取到 $maxlen$ ,需要记录当前的串长.
1 | //%std |
夢はここに 思い出は遠くに
$SAM$ .
对一个串建 $SAM$ ,把第二个串放到 $SAM$ 上去匹配.
到达一个状态 $x$ 时, $x$ 和它的所有祖先的匹配次数都会 $+1$ ,最后从下到上去更新就可以了.
匹配成功时,对每个祖先贡献为 $cnt\cdot |Right|\cdot (maxlen-minlen)$ .
但需要注意对自己的贡献,串长不一定能取到 $maxlen$ ,需要记录当前的串长.
1 | //%std |