字符串
文章平均质量分 71
dplovetree
浙师大软工在读,ACM即将退役选手
展开
-
2012-2013 NEERC, Moscow Subregional Contest D题 & 2021 ICPC Shenyang Regional M 题
M. String Problem 题意: 给一个串,对于每个前缀求字典序最大的后缀。 n<=1e6n<=1e6n<=1e6 思路: D. Darkwing Duck 题意: 给一个串,区间询问字典序最大后缀,可以离线。 n<=5e5,q<=5e5n<=5e5,q<=5e5n<=5e5,q<=5e5 ......原创 2022-07-15 08:58:37 · 190 阅读 · 0 评论 -
后缀数组 实现+经典trick+例题应用
后缀数组 字符串入门算法,碰到过好多次了,一直没学,今天来拾掇一下。 实现 这里不赘述实现原理,想知道的可以去看 罗穗骞的论文 后缀数组——处理字符串的有力工具 一、倍增实现 O(nlogn)O(nlogn)O(nlogn) #include<bits/stdc++.h> using namespace std; //sa[i]表示排名为i的后缀suffix(id),rk[i]表示后缀suffix(i)的排名 //ht[i]表示排名为i和i-1的后缀的lcp长度 const int N=200原创 2021-12-03 17:55:14 · 343 阅读 · 1 评论 -
2021牛客多校5 Double Strings
Double Strings 题意: 给你两个字符串sss和ttt,长度都小于等于5000,求有多少种子序列,使得s和t的子序列长度相同, 但是sss的子序列组成的字符串的字典序比 ttt 的小。 思路: 字典序小,即前缀相同的部分,有一位的字典序小,之后只要取长度相同即可。 我们可以用 dp[iii] [jjj],来预处理出,sss的前iii位,和ttt的前jjj位,前缀相同的方案数。 转移方程即为: dp[iii] [jjj] = dp[iii - 1] [jjj] + dp [iii] [jjj -原创 2021-08-23 19:58:11 · 78 阅读 · 0 评论 -
AC自动机
AC 自动机 AC自动机 本人也只做了几道模板题,不太会应用 orz 前置知识: KMP、trie树 AC自动机适用于多模式串匹配问题,如问几个模式串在文本串分别在文本中出现的次数; 首先,多字符串我们建立trie树来减少时间、空间复杂度。 其次我们在匹配的过程中,为了达到高效,我们需要再建立一个失配指针,指向深度最深的和当前节点有公共后缀的节点。 当我们匹配文本串的时候,我们优先遍历存在的节点,如果没有需要的节点了,我们就跳fail指针继续下去。 以上就是普通的,比较简单的AC自动机了。 接下来我们来讲重原创 2021-07-30 20:32:10 · 74 阅读 · 0 评论 -
0-1 字典树(异或小能手)
0-1字典树 相信大家都会字典树了,字典树可以用来节省空间复杂度, 即 最简单的多个单词 公用一个字母节点。 如果在字典树上建fail边,就变成AC自动机啦(这个有机会下次说)。 今天的主角 0-1 字典树,还能节约时间复杂度! 0-1字典树,顾名思义每个节点不是0就是1,0-1字典树最多有32层,每层代表一个二进制位。 他能实现 诸如 异或不等式的问题,在每个数字在边插入时边维护答案。 这里有三道例题,以后自己看得时候,不要嫌弃自己现在的代码 吃藕 555~ Hdu 6955 Xor sum 题意: 给你原创 2021-07-27 22:07:35 · 243 阅读 · 1 评论