【题解】P6292 区间本质不同子串个数

原题链接


区间本质不同子串个数

题目描述

给定一个长度为 n 的字符串 Sm 次询问由 S 的第 L 到第 R 个字符组成的字符串包含多少个本质不同的子串。

定义两个字符串 a,b 相同当且仅当 |a|=|b| 并且对于 i[1,|a|] 都有 ai=bi

输入格式

第一行一个长度为 n 的字符串 S

第二行一个整数 m,表示询问次数。

接下来 m 行,第 i 行包含两个整数 li,ri,描述第 i 次询问。

输出格式

m 行,每行一个整数,表示第 i 次询问的答案。

题解

看到这种离线且动态不太好做的区间信息可以想到扫描线,对于一个串,它会在最大的endpos值改变的时候将贡献的位置向后移动。
考虑加入一个字符后移动的串有哪些,在SAM上即为link树上当前点到根的所有子串。
于是我们需要维护SAM的link树,支持链修改。
用树剖是可做的,但是LCT做有非常好的性质,即一个splay中的串一定是同时改变的。
于是LCT维护一下,在开棵线段树维护一下答案(区间加等差数列)。

posted @   flywatre  阅读(21)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示