————字符串
mengbi_er
一个蒟蒻JLoier
展开
-
bzoj1398: Vijos1382寻找主人 Necklace
最小表示法。 记录两个指针i,j,任何时刻不在相同位置。 当前匹配长度为k. 如果s[i+k]=s[j+k] k++; 如果s[i+k]>s[j+k] i+=k-1,k=0; s[i+k]#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;char s[原创 2017-07-03 21:49:17 · 295 阅读 · 0 评论 -
Codeforces Round #422 (Div. 2) B. Crossword solving
题目大意给出较短串s和较长串t,s可以对应在任何位置,最少有多少位置不匹配。题解暴力。。。。 (注意把边界去掉) #include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0;原创 2017-07-03 21:59:06 · 215 阅读 · 0 评论 -
bzoj1355: [Baltic2009]Radio Transmission
kmp题。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int n,nxt[1000005];char s[1000005];int main(){ scanf("%d",&n); scanf("%s",s+1); nxt[0]原创 2017-07-06 18:59:58 · 250 阅读 · 0 评论 -
bzoj2882: 工艺
最小表示法裸题。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar();int f=0; while(ch<'0'||ch>'9') ch=getchar(); while(ch>=原创 2017-07-24 11:21:12 · 320 阅读 · 0 评论 -
Codeforces Round #425 (Div. 2)B. Petya and Exam
题目大意给出一个字符串和多组询问,‘?’代表一个好的字符,‘*’代表一个坏的字符串(可以是空串),能否让询问和字符串相同。题解由于‘*’只有一个,可以知道其代表的长度,暴力判断即可。(要注意询问比字符串长的情况)。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;原创 2017-07-25 01:47:44 · 509 阅读 · 0 评论 -
bzoj1717: [Usaco2006 Dec]Milk Patterns 产奶的模式
求后缀数组,二分答案,有超过k个连续height>=mid 就符合。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<queue>using namespace std;int read(){ char ch=getchar();int f=0; while(ch原创 2017-09-05 14:20:30 · 239 阅读 · 0 评论 -
Codeforces Round #430 (Div. 2) D. Vitya and Strange Lesson
题目大意每次对数组异或一个值,求数组的mex(没在数组出现的最小非负整数)题解对所有数建一棵二进制trie树,记录修改的二进制位,贪心选择,如果修改的状态在原数组中没出现过,则之后的二进制位都可以与答案相同(即结果为0),如果当前节点子树没满,则可以与当前修改状态相同,否则只能与修改相反。(我好弱啊模板题调1小时)#include<iostream>#include<cstdio>#includ原创 2017-08-30 15:04:13 · 244 阅读 · 1 评论 -
bzoj2946: [Poi2000]公共串
将所有串连起来,中间加一个分隔符,二分答案,有连续ht>=mid且每个串中都出现一次就合法,否则不合法,一定要将分隔符特判掉,否则=0会输出1。#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>using namespace std;int read(){ char ch=getchar()原创 2017-09-08 18:16:49 · 269 阅读 · 0 评论 -
【模板】后缀数组
#include<iostream>#include<cstdio>#include<cstring>#include<algorithm>#include<ctime>using namespace std;#define N 2000006int sa1[N],sa2[N],rk1[N],rk2[N],v[N];int *sa,*SA,*rk,*RK;bool ac=0;cha转载 2017-10-16 16:15:42 · 223 阅读 · 0 评论