本文共 1043 字,大约阅读时间需要 3 分钟。
题目大意: 给出一个字符串,询问它的每一个前缀内包含多少个不同的子串。
题解
将字符一个一个加入到SAM里,每个新的字符的的贡献为 l e n ( x ) − l e n ( l i n k ( x ) ) len(x)-len(link(x)) len(x)−len(link(x)),因为从 l e n ( l i n k ( x ) ) len(link(x)) len(link(x)) 这个长度开始,下面的长度的后缀都已经出现过了,只有上面的后缀是没出现过的,即新的不同的子串。
代码如下:
#include #include #include
转载地址:http://ajnib.baihongyu.com/