字符串
罪_蒟蒻PDD
一个OI的萌新蒟蒻,本人智商偏低,希望得到大佬的帮助
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
luoguP3375 【模板】KMP字符串匹配
题目描述如题,给出两个字符串s1和s2,其中s2为s1的子串,求出s2在s1中所有出现的位置。为了减少骗分的情况,接下来还要输出子串的前缀数组next。(如果你不知道这是什么意思也不要问,去百度搜[kmp算法]学习一下就知道了。)输入输出格式输入格式:第一行为一个字符串,即为s1第二行为一个字符串,即为s2输出格式:若干行,每行包含一个整数,表示s2在s1中出现的位置接下来1行,包括length(...原创 2018-03-24 23:44:43 · 278 阅读 · 0 评论 -
luoguP3435 [POI2006]OKR-Periods of Words
题目链接分析首先说明一下题意那个翻译不太好理解,题目意思是 设原串S 一个字符串的非空真前缀为Q(proper前缀)不能和S一样,不能为空; 如果说S为Q+Q的前缀,那么strlen(Q)就是周期;求的是S所有的前缀的最大周期;. 那么就很容易想到用kmp来做这题,用kmp先对自己进行匹配就是求出所有的含有非空前缀;然后在用i-f[f[i]]求出前缀的最大周期(这个很好证明,...原创 2018-04-01 13:04:54 · 409 阅读 · 0 评论 -
luooj1559最强阵容加强版
题目链接 分析 用最小表示法返回最小表示串(字典序最小的同构串)第一个字符在原始串中的下标。 用两个指针i,j,i初始化为0,j初始化为1,用k表示当前已经匹配串的长度。如果str[i+k]==str[j+k],j++,否则如果str[i+k]>str[j+k],说明以i开始的同构串肯定不是最小的,并且以i开始的到以i+k开始的都不会是最小的,因为若以i+x开头,0<=x&l...原创 2018-03-27 21:08:40 · 372 阅读 · 0 评论 -
luooj P1405好元素
题目链接 分析 这道题巧妙的应用了hash和边表; 首先分析一下题意,就是让你在n个数里找3个数加起来等于第四个数。 ai+aj+ap=ak <==> ai+aj=ak-ap 之后就简单了就是边表的技巧 代码#include<bits/stdc++.h>#define N 12600000#define M 4194303using namespa...原创 2018-03-27 19:26:34 · 209 阅读 · 0 评论 -
luooj最强阵容加强版
传送门分析模板题;运用到最小表示法具体实现见代码,网上的题解也很多#include<bits/stdc++.h>using namespace std;char s[1000005];int MINSTR(){ int len=strlen(s+1); for(int i=1;i<=len;i++)s[i+len]=s[i]; int i...原创 2018-04-23 20:28:17 · 582 阅读 · 0 评论 -
luooj[USACO 1.3.3]Calf Flac
传送门manacher算法用来找字符串中的最长回文子串的algorihtm Manacher算法可以将长度为奇数和偶数的回文串一起考虑: 在原字符串的相邻字符串之间插入一个分隔符,字符串的首尾也要分别添加, 注意分隔符必须是原字符串中没有出现过的原字符串s a b a b c转换后字符串str # a # b #...原创 2018-04-19 21:58:38 · 424 阅读 · 0 评论 -
luooj公共前后缀长度(presuf)
题目链接分析首先这是一道KMP的应用题,这已经是我第二次学KMP了这一次先学了没有什么用的优化QAQ根据KMP的算法匹配串的后缀==模式串的前缀 so 可以推得 对于串S,根据f[strlen(S)]得到的最长相同前后缀为S1,则再根据f[strlen(S1)]得到的S1的最长相同前后缀S2肯定也为S的相同前后缀。(如此就有了所谓的递推式) 这样,通过不断的向...原创 2018-04-27 22:41:11 · 539 阅读 · 0 评论
分享