好神。
考虑到我们二分答案。
那么我们要做的是这样一个事情:
判定s[c,d - l]在s[a,b]是否以子串形式出现过。
那这是一个\(SAM\)的很套路的题目:
我们考虑到我们维护每个endpos集合的出现的子串,这个我们在\(link\)树上做线段树合并即可。
我们从表示\(s[1,b]\)的SAM节点倍增往上跳找到表示\(s[a,b]\)的点就行了。
那我们只要看\(len\)就可以做了。
代码鸽,存了个计划表,如果我NOIP没退役就回来写这个计划表。
2023-11-01 22:42:40
好神。
考虑到我们二分答案。
那么我们要做的是这样一个事情:
判定s[c,d - l]在s[a,b]是否以子串形式出现过。
那这是一个\(SAM\)的很套路的题目:
我们考虑到我们维护每个endpos集合的出现的子串,这个我们在\(link\)树上做线段树合并即可。
我们从表示\(s[1,b]\)的SAM节点倍增往上跳找到表示\(s[a,b]\)的点就行了。
那我们只要看\(len\)就可以做了。
代码鸽,存了个计划表,如果我NOIP没退役就回来写这个计划表。