
KMP算法
Mys_C_K
人生有许多道:曾经踏足的是道,即将踏往的也是道,那什么才是道呢?唯有脚下走的才是道。一切精神或者物质都归于虚无,然后从混沌中衍生出三万道。在悲喜间涉足一条无数前人经历过,且将有无数后人奔赴的道,无论是否已经或者将要到达彼岸,然后便不再回头或是左顾右盼,即使有些道繁盛至极,夜灯如昼,无数人一浪又一浪的涌去,造就了世人皆知的辉煌;即使有些道草木凋敝,荒草丛生,只等勇敢的开拓者斩开荆棘,创造一片天地;这些都无所关,无所在意,彼岸何如、来日何方甚至过往旧事都化作一缕云烟,飘渺碧霄,我自撷高山之月色,独随足落处往行。
展开
-
BZOJ3620 似乎在梦中见过的样子 - KMP算法
传送门题解:和NOI2014动物园一模一样唯一的坑点在于这个题O(n^2)就可以过!!!!!!!!代码://BZOJ 3620#include#include#include#define MAXN 15010using namespace std;char s[MAXN];int k;#ifdef begin#undef begin#defien begin原创 2017-06-20 09:58:56 · 454 阅读 · 0 评论 -
POJ 2406 Power String 最短循环子串 - KMP
传送门题目大意:求循环子串的最短循环节。题解:首先注意到如果他是循环子串那么n-next[n]一定是最小循环节。于是可以先求出nxt然后暴力匹配一遍看看。但是事实上只要满足n%(n-next[n])==0就可以保证答案正确了。可以用类似递归的方式证明。代码:#include#include#include#define MAXN 1000010using namespa原创 2017-06-11 19:35:31 · 1166 阅读 · 0 评论 -
[HNOI2008]BZOJ1009 GT考试 - 动态规划 - 矩阵乘法 - KMP
传送门题解:首先一开始并没有意识到这个题根KMP有9毛钱关系,只是以为如果设状态为:f[i][j]表示当前考虑到第i位,且有j位是B的前缀,那么如果下一位是B的j+1位那么就可以转移到f[i+1][j+1],否则转移到f[i+1][0]。后来发现我真是个智障。f[i][j]的j能转移到哪里,计算类似于KMP算法,我们枚举第j+1位是什么转移,转移到哪就在矩阵上+1。要特判一原创 2017-07-16 20:30:43 · 418 阅读 · 0 评论 -
codeforces 631D Messenger - KMP算法
传送门 题解:模板题,分类讨论。#include#include#include#define N 1000010#define lint long longusing namespace std;int nxt[N],pos[N];lint cs[N],ct[N];char s[N],t[N];inline int get_nxt(char *s,lint *c,int原创 2018-02-04 13:56:11 · 395 阅读 · 0 评论 -
Codeforces #502 A~E
AB略。 C,结论是把排列弄成L段,使得n除以L上取整加上L最小。#include<iostream>#include<cstring>#include<cstdio>#include<algorithm>using namespace std;int main(){ int n,原创 2018-08-09 15:43:20 · 288 阅读 · 0 评论 -
ARC #077 SS(含严格证明) - KMP
结论题,假设那个串叫SS,并且操作一次后变成TT。 首先自己画画就会发现T比S多出来的那一段一定是S的一个周期。(注意S的周期和SS的周期不是一回事,比如样例) 前缀技能:如果a和b都是s的周期,那么(a, b)也是s的周期。因此s的最小正周期是s的任何一个周期的周期,证明类似辗转相除。 然后我们证明对于任意情况下,你选择的周期,记做g,越小越好,也就是选择最小周期g。否则,假设选择的是h是...原创 2018-08-07 15:38:03 · 297 阅读 · 0 评论