
-------------字符串-------------
CHN_JZ
爆0 forever
展开
-
[Trie]BZOJ 4896——[Thu Summer Camp2016]补退选
4896: [Thu Summer Camp2016]补退选题目大意给定n个操作。 如果k=1,加入一个字符串S。 如果k=2,删除一个字符串S。 如果k=3,查找最早什么时候以字符串S为前缀的字符串数超过(a∗|ANS|+b)(a*|ANS|+b)%c,ANSANS是上一次查找的答案。解题思路不难想到维护一棵Trie树,但是对于每个节点不仅要维护出现次数,还要开一个数组记录每个出现次数最早达原创 2017-06-29 14:29:46 · 773 阅读 · 1 评论 -
Hdu 3068最长回文——Manacher算法
Manacher算法概念这是一种能够在将近O(n)的时间里求出给定字符串的最长回文子串的算法。思想首先我们知道字符串的长度分奇偶,这对我们考虑问题影响很大,所以在给定字符串的所有字符之间插入一个无关字符(包括首尾),这样对答案没有什么影响,而且字符串的长度都变为n*2+1,是个奇数。 然后定义一个f数组,f[i]表示以i为中心向右/向左扩展的长度(包括i),定义mx,id...原创 2017-05-23 21:22:00 · 748 阅读 · 2 评论 -
字符串匹配问题——KMP算法
KMP算法 KMP是解字符串匹配这类题目的算法,又称“看毛片”算法。如下图,给定一个长度为n的文本,给定一个长度为m 的字符串,求该字符串在给定文本的中出现的次数。KMP就是解决这一类题目的。i 1 zzkzzzkzzzkzkkkz zzkzzkzzkzzk j 1继续考虑上面的问题。首先我相信每个人都有一个笨蛋的想法,就是枚举在文本的起始位置i,然后把字符串从这个位置开始一个一个对原创 2017-02-15 23:00:10 · 687 阅读 · 5 评论 -
[KMP]POJ 3416——Oulipo
题目传送门 又水blog了,对,我不解释了 这题就是裸的KMP求方案数#include<cstdio>#include<cstring>using namespace std;const int maxn=1000005;int t,n,m,ans,fail[maxn];char a[maxn],b[maxn];void work(){ int j=0; for (i原创 2017-08-02 12:06:31 · 444 阅读 · 0 评论