NOI2018 Day1 T3 你的名字(后缀自动机+线段树合并)

5417: [Noi2018]你的名字

先建出原串的SAM,在线段树合并求出每个节点的Right集合

再对于每个询问在原串的SAM上求出以询问串i结尾的后缀与(原串的任意子串)重合的最大长度lim[i]

最后对于询问串建SAM,令Pos[i]为询问串的SAM节点i在询问串中的位置(任意该后缀出现的位置)

则答案为\(\sum max(0,ST[i].len-max(lim[Pos[i]],ST[ST[i].fa].len))\)

注:原题内存1G,BZOJ 只开了512M,可能需要卡内存

 

0 0 vote
Article Rating
Subscribe
提醒
guest
0 评论
Inline Feedbacks
View all comments