题意:
求出每个前缀的最长周期之和(等于本身的算0)

思路:

求出来next数组  建出next树 找到不为0的最小的 n减去它就是答案

//By SiriusRen
#include <cstdio>
using namespace std;
const int N=;
int n,next[N];
char s[N];
long long ans;
void get_next(){
for(int i=,j=;s[i];i++){
while(j&&s[i]!=s[j+])j=next[j];
if(s[i]==s[j+])j++;
next[i]=j;
}
}
int main(){
scanf("%d%s",&n,s+);
get_next();
for(int i=;i<=n;i++){
while(next[next[i]])next[i]=next[next[i]];
if(next[i])ans+=i-next[i];
}printf("%lld\n",ans);
}

BZOJ 1511 KMP的更多相关文章

  1. bzoj 1511: [POI2006]OKR-Periods of Words【kmp】

    n-ne[n]是n的最长循环节长度,其实就是n-最短前缀=后缀长度 然后我们要求最短循环节,其实就是ne一直往前跳,跳到不能跳为止,这时的n-ne[n]就是n的最短循环节长度 #include< ...

  2. BZOJ 1511: [POI2006]OKR-Periods of Words

    Description 求一个最长周期. Sol KMP. 一个点的最短周期就是 \(i-next[i]\) 此外 \(i-next[next[i]],i-next[next[next[i]]]\) ...

  3. BZOJ 1355 & KMP

    BZOJ放这种丝帛我也是醉了... 不过来填一下求最小循环节的坑... 以这道题为例,相同文本串粘起来的串中取一小节,可以把任意一个字符看做文本串头. 那么我们一次KMP求出next函数然后显见,最后 ...

  4. BZOJ 3670 && BZOJ 3620 && BZOJ 3942 KMP

    最近感到KMP不会啊,以前都是背板的现在要理解了. #include <iostream> #include <cstring> #include <cstdio> ...

  5. BZOJ - 1009 KMP+可达矩阵

    题意:存在一个长度为m的串str,求长度为n的不含str子串的字符串的方案数 什么鬼题目 设\(f[i][j]\):长为\(i\)的串中以\(i\)结尾的长度为\(j\)的后缀 与 模式串(str)中 ...

  6. BZOJ 1355 KMP中next数组的应用

    思路: 我们知道 next[i]是失配的i下一步要去哪儿 next[n]就是失配的n要去哪儿 n-next[n]就是答案(即最短周期)啦 //By SiriusRen #include <cst ...

  7. 蓝书2.2 KMP算法

    T1 Radio Transmission bzoj 1355 题目大意: 一个字符串,它是由某个字符串不断自我连接形成的 但是这个字符串是不确定的,现在只想知道它的最短长度是多少 思路: kmp 输 ...

  8. NOIP 考前 KMP练习

    BZOJ 1461 && BZOJ 1729 KMP+BIT 一看就是字符串匹配但是不同的是要按照每个字符的排名情况. 首先对于数字x的排名,那么要判断x前小于x的数的个数,和x前小于 ...

  9. [POI2006] OKR-period of words

    传送门 - > \(bzoj 1511\) 题目描述 A string is a finite sequence of lower-case (non-capital) letters of t ...

随机推荐

  1. css知识框架

  2. Git学习总结三(工作区和暂存区、撤销修改)

    工作区和暂存区 工作区(Working Directory) 就是你在电脑里能看到的目录,比如我的learngit文件夹就是一个工作区: 版本库(Repository) 工作区有一个隐藏目录.git, ...

  3. 哈夫曼树(Huffman Tree)

    Date:2019-06-21 14:42:04 做题时更多的是用到哈夫曼树的构造思想,即按照问题规模从小到大,依次解决问题,可以得到最优解 Description: 在一个果园里,多多已经将所有的果 ...

  4. wing ide破解

    LicenseID='CN123-12345-12345-67891' # RequestCode='RL634-8363J-X7E8K-95XD3' RequestCode = 'RW61C-NN6 ...

  5. Vector 和 Array 区别

    1:array 定义的时候必须定义数组的元素个数;而vector 不需要:且只能包含整型字面值常量,枚举常量或者用常量表达式初始化的整型const对象, 非const变量以及需要到运行阶段才知道其值的 ...

  6. CA认证相关

    目录 CA认证相关 基本概念 CA认证相关 公钥私钥详解>> 基本概念 密钥对: 在非对称的加密技术中心, 有两种密钥, 分为私钥和公钥,私钥 --RSA算法-->公钥. 公钥: 公 ...

  7. 303. Range Sum Query - Immutable(动态规划)

    Given an integer array nums, find the sum of the elements between indices i and j (i ≤ j), inclusive ...

  8. hdu2001 计算两点间的距离【C++】

    计算两点间的距离 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 65536/32768 K (Java/Others)Total Su ...

  9. Codeforces Round #404 (Div. 2)——ABCDE

    题目这里 A.map裸题 #include <bits/stdc++.h> using namespace std; map <string, int> p; string s ...

  10. POJ - 3538 - Domestic Networks

    先上题目: Domestic Networks Time Limit: 2000MS   Memory Limit: 65536K Total Submissions: 732   Accepted: ...