首页 > 其他分享 >【题解】P6292 区间本质不同子串个数

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

时间:2023-04-18 15:24:08浏览次数:54  
标签:子串 题解 询问 本质 区间 字符串 P6292

原题链接


区间本质不同子串个数

题目描述

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

定义两个字符串 \(a,b\) 相同当且仅当 \(|a|=|b|\) 并且对于 \(i\in[1,|a|]\) 都有 \(a_i=b_i\)。

输入格式

第一行一个长度为 \(n\) 的字符串 \(S\)。

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

接下来 \(m\) 行,第 \(i\) 行包含两个整数 \(l_i,r_i\),描述第 \(i\) 次询问。

输出格式

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

题解

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

标签:子串,题解,询问,本质,区间,字符串,P6292
From: https://www.cnblogs.com/flywatre/p/17329700.html

相关文章

  • 超级码力初赛第二场 五字回文 题解
    题目描述小栖最近很喜欢回文串,由于小栖的幸运数字是5,他想知道形似“abcba"的回文串在他给定的字符串中的数量s.length<=10^6字符串s只包含小写字母示例示例1:输入:s="abcba"输出:1示例2:输入:s="abcbabcccb"输出:2解释:形似”abcba“的字符串有”abcba“和”cbab......
  • CF题解
    D.GuessthePermutation2000逆序性质二分https://codeforces.com/contest/1589/problem/D题解:首先我们可以二分查找i的位置:当1->x逆序对>0,则在i右,否则在左,log(n)次询问。找到i的位置后,我们发现逆序对有如下性质,i->j-1的数量和i+1->j-1的数量差为j-1-i,故我们可以询问i+1->n......
  • GDOU-CTF-2023新生赛Pwn题解与反思
    第一次参加CTF新生赛总结与反思因为昨天学校那边要进行天梯模拟赛,所以被拉过去了。16点30分结束,就跑回来宿舍开始写。第一题和第二题一下子getshell,不用30分钟,可能我没想那么多,对比网上的WP,自己和他们有点不太一样,比较暴力。大概17点10的时候,写第三题,可能自己第一次遇到随机数问......
  • elementui select下来内容过长问题解决方案
    :popper-append-to-body="false"必写自定义显示<divclass="select-flow">{{dict.declareConditions}}</div>自定义css样式el-option添加title属性 <el-selectv-model="formData.declCondition"placeholder="请选择"sty......
  • CF1646E Power Board 题解
    题目链接:https://codeforces.com/contest/1646/problem/E题目大意:有一个\(n\timesm\)的矩阵,其中第\(i\)行第\(j\)列的格子中的数字是\(i^j\)。问:矩阵中存在多少个不同的数?解题思路:可以很明显地发现,第\(1\)行的数字全部都是\(1\),而且在其它行不会出现数值为\(1\)......
  • idea中tomcat中文显示乱码问题解决
    组合拳:1、找到tomcat安装目录下面的logging.properties文件如下图:2、修改java.util.logging.ConsoleHandler.encoding=utf-8为java.util.logging.ConsoleHandler.encoding=UTF-8 3、打开idea,在file->settings->appearence里修改Name的值为支持中文的字体4、修改file......
  • 洛谷P7492 [传智杯 #3 决赛] 序列 题解 数列分块
    题目链接:https://www.luogu.com.cn/problem/P7492解题思路:分块。解题思路全部来自yzy1大佬的博客额外掌握技能:编译时加入-Wall参数。示例程序:#include<bits/stdc++.h>usingnamespacestd;constintmaxn=1e5+5;intn,m,blo,//n表示数列长度,m表......
  • 团体天梯练习 L2-008 最长对称子串
    L2-008最长对称子串对给定的字符串,本题要求你输出最长对称子串的长度。例如,给定IsPAT&TAPsymmetric?,最长对称子串为sPAT&TAPs,于是你应该输出11。输入格式:输入在一行中给出长度不超过1000的非空字符串。输出格式:在一行中输出最长对称子串的长度。输入样例:IsPAT&TAP......
  • abc250_d 250-like Number 题解
    250-likeNumber题意给定一个整数\(n\),求有多少小于等于\(n\)的满足以下条件的整数\(k\):\(k\)可以被表示为\(k=p\timesq^3\),其中\(p\ltq\),并且\(p,q\)均为质数。数据范围\(1\leqslantn\leqslant10^{18}\),\(n\)是整数。思路首先,我们发现这个式子中......
  • 洛谷T226686 长度为2的子串
    题目描述给你一个长度为n 的由大写的英文字母组成的字符串,请你找出出现频率最高的长度为2的子串。输入格式包括两行。第一行是一个正整数n,表示字符串长度。第二行是长度为n的大写英文字母组成的字符串。(2<=n<=100)输出格式包括一行。一个长度为2的字符串,该字符串为输入......