字符串
文章平均质量分 71
dplovetree
华东师大 数据学院在读
展开
-
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 · 247 阅读 · 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 · 375 阅读 · 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 · 94 阅读 · 0 评论 -
AC自动机
AC 自动机AC自动机 本人也只做了几道模板题,不太会应用 orz前置知识:KMP、trie树AC自动机适用于多模式串匹配问题,如问几个模式串在文本串分别在文本中出现的次数;首先,多字符串我们建立trie树来减少时间、空间复杂度。其次我们在匹配的过程中,为了达到高效,我们需要再建立一个失配指针,指向深度最深的和当前节点有公共后缀的节点。当我们匹配文本串的时候,我们优先遍历存在的节点,如果没有需要的节点了,我们就跳fail指针继续下去。以上就是普通的,比较简单的AC自动机了。接下来我们来讲重原创 2021-07-30 20:32:10 · 87 阅读 · 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 · 291 阅读 · 1 评论