LOJ #6031 字符串】的更多相关文章

Description Solution 当 \(k\) 值较小时,发现询问串比较多,串长比较小 然后对 \(Q\) 个询问区间离线跑莫队,一次考虑每一个区间的贡献 假设一个区间 \([i,j]\) 出现的次数是 \(c[i][j]\),然后 \(O(k^2)\) 求出每一个区间的贡献,乘上 \(c[i][j]\) 就是答案 当 \(k\) 值较大时,询问次数比较少,串长比较大 考虑与询问次数有关的做法 对于每一个询问,预处理出 \(w\) 的每一个前缀在 \(S\) 的 \(SAM\) 中匹配…
[LOJ 6031] 「雅礼集训 2017 Day1」字符串 题意 给定一个长度为 \(n\) 的字符串 \(s\), \(m\) 对 \((l_i,r_i)\), 回答 \(q\) 个询问. 每个询问会给定一个长度为 \(k\) 的字符串 \(w\) 以及一对 \(L,R\), 求所有满足 \(i\in [L,R]\) 的 \(w[l_i:r_i]\) 在 \(s\) 中的出现次数之和. \(n,m,k,q\le 1\times 10^5\), \(\sum |w|\le 1\times 10…
loj 注意到每次询问串长度都是给定的,并且询问串长\(k*\)询问次数\(q<10^5\),所以这里面一个东西大的时候另一个东西就小,那么考虑对较小的下功夫 如果\(k\le \sqrt{n}\),那么可以\(O(k^2)\)暴力枚举询问串的每一个子串,然后在\(S\)的sam找到这个子串对应的点,算出出现次数,并且乘上在区间\([a,b]\)中这个子串询问的出现次数.找到子串对应的点为了方便,可以依次让询问串的某个前缀在sam上匹配,然后按长度从大到小枚举前缀的后缀,从匹配位置开始倍增跳父亲…
题意 链接 Sol \(10^5\)次询问每次询问\(10^5\)个区间..这种题第一感觉就是根号/数据分治的模型. \(K\)是个定值这个很关键. 考虑\(K\)比较小的情况,可以直接暴力建SAM,\(n^2\)枚举\(w\)的子串算出现次数.询问用个\(n^2\)的vector记录一下每次在vector里二分就好. \(K\)比较大的情况我没想到什么好的做法,网上的做法复杂度也不是很好.. 然后写了个广义SAM + 暴力跳parent就过了.. 不过这题思想还是很好的 #include<bi…
网上有篇题解写的是线段树合并维护求值? 题目描述 有一个只包含小写字母,长度为 $n$ 的字符串 $S$ .有一些字母是好的,剩下的是坏的. 定义一个子串 $S_{l\ldots r}$是好的,当且仅当这个子串包含不超过 $k$ 个坏的字母. 求有多少个不同的满足以下要求的字符串 $T$ : $T$ 作为 $S$ 的子串出现过. 存在一个 $T$ 出现的位置 $[l,r]$ ,满足 $S_{l\ldots r}$​ 是好的. 输入格式 第一行有一个字符串 $S$ . 第二行有一个字符串 $B$…
T1:loj 6029 市场 题目大意: 维护一个数据结构支持区间加 区间除法 区间求最小值 区间求和 思路: 用线段树维护区间加 区间求最小值 区间和 对于区间除法 注意到除数d很大而加法的w很小 尝试将区间除法变成区间减法 可以转化成减法的情况就是除法的时候减的数相同即区间内所有数相同或最小数和最大数相差为一且最大数为除数的倍数 即维护区间min max 加减法tag sum即可 #include<iostream> #include<cstdio> #include<c…
Contest 1135 at HZOI Problem A: 优美的棋发现一个可以证明的规律就是了……忘记给<<运算的左边变量转化为long long类型了,结果挂了20分……以后一定记得<<运算不会因为右边变量是long long类型而把运算改为long long类型啊……而且也要记得测试大数据来查错啊……Problem B: 优美的树50分的dp很好想……然后就是优化了……我们知道,我们的dp状态数组可以看做是一个离散的函数,而二维的状态数组便可以看做是n个函数,所以如果这个…
[LOJ#3095][SNOI2019]字符串(后缀数组) 题面 LOJ 题解 首先画图看看如何比较两个串的大小,发现这个东西等价于求两个相邻的后缀的\(LCP\). 一个做法是求出\(SA\),然后就可以很容易的判断两个位置的大小了. 然而实际上相邻两个后缀的\(LCP\)转移可以很容易的从前一个得到,所以这部分的复杂度不会超过\(O(n)\). 那么复杂度瓶颈就在排序了,时间复杂度\(O(nlogn)\). #include<iostream> #include<cstdio>…
题目传送门:LOJ #3049. 题意简述: 给定一个长度为 \(n\) 的母串 \(S\). 有 \(n_a\) 个 A 类串,都是 \(S\) 的子串,以区间的形式给出. 有 \(n_b\) 个 B 类串,都是 \(S\) 的子串,以区间的形式给出. 有 \(m\) 个支配关系,形式为第 \(i\) 个 A 类串支配第 \(j\) 个 B 类串. 你需要求出最长的字符串 \(T\) 的长度,使得 \(T\) 可以被划分为若干个 A 类串的拼接,并且相邻两个 A 类串 \(t_i\) 和 \(…
题面 LOJ #6436. 「PKUSC2018」神仙的游戏 题解 参考 yyb 的口中的长郡最强选手 租酥雨大佬的博客 ... 一开始以为 通配符匹配 就是类似于 BZOJ 4259: 残缺的字符串 这样做 . 把通配符设成 \(0\) 然后 . 别的按 \(\mathrm{ASCII}\) 码 给值 , 最后把他写成式子的形式 ... 后来发现太年轻了 qwq 先要做这题 , 那么先发现性质咯 : 存在一个长度为 \(len\) 的 \(border\) 当且仅当对于 \(\forall i…