![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
————字符串
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 · 267 阅读 · 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 · 189 阅读 · 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 · 240 阅读 · 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 · 291 阅读 · 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 · 480 阅读 · 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 · 226 阅读 · 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 · 236 阅读 · 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 · 261 阅读 · 0 评论 -
【模板】后缀数组
#include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<ctime> using namespace std; #define N 2000006 int 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 · 215 阅读 · 0 评论