
字符串算法
黑夜和白天
过去无可挽回,未来可以改变
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
codeforces432D[kmp的next数组的运用]
解题思路:1.就是nxt数组不断嵌套递归下去就好了2.如何统计子串出现的个数我们从后往前遍历:根据那个图大的子串会包含小的子串,所以我们就处理前缀和将大的个数加到小的里面去#include <cstdio>#include <cstring> const int N = 1e5+5; int n, jump[N], c, r[N], dp[N];char str[N]; void getJump() { int k = 0; n = ..原创 2020-08-14 21:40:16 · 244 阅读 · 0 评论 -
exkmp解读
题解 P5410 【【模板】扩展 KMP】 posted on 2019-05-20 13:51:22 | under 题解 | 55 一、引言一个算是冷门的算法(在竞赛上),不过其算法思想值得深究。二、前置知识kmp 的算法思想,具体可以参考这篇日报。trie 树(字典树)。三、...转载 2020-08-14 20:16:24 · 881 阅读 · 0 评论 -
[Scoi2016]背单词[字典树+dfs重构树[类似虚树]]
解题思路:很明显第一个条件是可以避免的,第二个条件是第三个条件的特殊情况,所以有用的只有第三个条件,现在我们就是想将这些单词重排使得每个单词后缀都在这个单词的前面并且代价最小我们举个例子:6acaeagdahdaifb很明显我们发现很多点是没有用的我们为了计算其实可以直接提出红色的点我们可以举几个例子,发现先跑子树小的明显最优#include <iostream>#include <cstdio>#include <stack>...原创 2020-08-14 17:16:22 · 241 阅读 · 0 评论 -
Codechef REBXOR[dp+字典树]
解题思路:1.区间异或和可以搞前缀[or后缀]异或,xori=lra=pre[l]⊕pre[r]xor_{i=l}^{r}a=pre[l]\oplus pre[r]xori=lra=pre[l]⊕pre[r]2.那么题目就变成了pre[l]⊕pre[r]+suf[l1]⊕suf[r1],pre是前缀异或和,suf是后缀异或和pre[l]\oplus pre[r] +suf[l_1]\oplus suf[r_1],pre是前缀异或和,suf是后缀异或和pre[l]⊕pre[r]+suf[l1]⊕s...原创 2020-08-14 10:23:49 · 435 阅读 · 0 评论 -
bzoj异或之[查询异或和的第k小]
题目大意:给你n个数,两两互相异或出n∗(n−1)/2n*(n-1)/2n∗(n−1)/2个数,求前k小的数第一次知道trie树可以查询异或值得第k小解题思路有点像这道题:题目门我们可以用优先队列维护每次先整出每个数异或的第二小值,因为第一小是自己异或自己,再继续把第二小踢掉类推下去找第三小#include <iostream>#include <cstdio>#include <stack>#include <sstream>#inc.原创 2020-08-13 22:55:41 · 373 阅读 · 0 评论 -
Balkan2007]Toponyms[链式前向星建字典树+getchar()读入优化]
思路容易想,卡空间和时间就吐了用链式前向星压缩空间,用getchar()一位一位读加快读入#include <iostream>#include <cstdio>#include <stack>#include <sstream>#include <limits.h>#include <vector>#include <map>#include <cstring>#include <.原创 2020-08-13 17:32:07 · 234 阅读 · 0 评论 -
[HNOI2008]GT考试[矩阵快速幂+kmp优化的dp]
解题思路:假如说我们用f[i]表示长度为i的串能组合成无不吉利数字的组合的个数的话我们无法找到f[i]和f[i+1]的关系,就是我们下一位填某个数字会不会出现不吉利串,这就和你前面的串末尾于不吉利串重合部分的长度有关那么f[i][j]表示长度为i末尾是不吉利串长度是j的方案数 我们再定义一个a[i][j]表示从长度为i变成长度为j的方案数f[i+1][j]=f[i][0]∗a[j][0]+f[i][1]∗a[j][1]...+f[i][m−1]∗a[m−1][j];f[i+1][j]=f[i][0]..原创 2020-08-13 08:56:48 · 142 阅读 · 0 评论 -
[Poi2010]Hamsters[字符串hash+floyed+矩阵快速幂]
tip:这里题意有两个细节就是:1.出现名字次数[不指定是哪些名字]2.名字是不相互包含的解题思路:我们先看看样例:szymonikaszymonikatomck;[长度23]其中:szymon和monika出现两次,tomck出现一次这时候我们就会联想到最短路:将每个单词看成一个点,对于任意两个单词i和j我们有两种选择就是把i接到j后面,或者把j接到i后面,边权就是拼接之后[最长的公共部分会重叠]字符串增加的长度举个例子:设szymon是3号点,monika是1号点,当1号接在3号后面时..原创 2020-08-12 22:02:00 · 392 阅读 · 0 评论 -
SZUACM集训字符串基础总结: 字符串最小表示 ,KMP, EXKMP, Manracher, Trie树,字符串的hash; 附带一写常见的运用技巧,邝斌大佬的板子和例题[持续更新]
第一部分 字符串的匹配<-------->KMP模式匹配:子串的定位运算称为串的模式匹配或串匹配。假设有两个串S,T,设S为主串,也称正文串,T为子串,也称为模式,在主串S中查找与模式T相匹配的子串,如果查找成功,返回匹配的子串第1个字符在主串中的位置。最笨的办法就是穷举所有S的所有子串,判断是否与T匹配。该算法称为BF(Brute Force)算法,Brute Force的意思是...原创 2020-04-04 21:09:24 · 689 阅读 · 0 评论