【题解】P6292 区间本质不同子串个数
区间本质不同子串个数
题目描述
给定一个长度为 的字符串 , 次询问由 的第 到第 个字符组成的字符串包含多少个本质不同的子串。
定义两个字符串 相同当且仅当 并且对于 都有 。
输入格式
第一行一个长度为 的字符串 。
第二行一个整数 ,表示询问次数。
接下来 行,第 行包含两个整数 ,描述第 次询问。
输出格式
行,每行一个整数,表示第 次询问的答案。
题解
看到这种离线且动态不太好做的区间信息可以想到扫描线,对于一个串,它会在最大的endpos值改变的时候将贡献的位置向后移动。
考虑加入一个字符后移动的串有哪些,在SAM上即为link树上当前点到根的所有子串。
于是我们需要维护SAM的link树,支持链修改。
用树剖是可做的,但是LCT做有非常好的性质,即一个splay中的串一定是同时改变的。
于是LCT维护一下,在开棵线段树维护一下答案(区间加等差数列)。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】