(传送门)

大意:对于给定串的每个前缀i,求最长的,使这个字符串重复两边能覆盖原前缀i的前缀(就是前缀i的一个前缀),求所有的这些“前缀的前缀”的长度和

利用 p 的性质:前缀 i 的长度为 p[i] 的前缀和后缀是相等的

这说明:如果i有一个公共前后缀长度为j,那么这个前缀i就有一个周期为i-j

于是我们先预处理p数组,然后再把p数组更新变成最小公共前后缀。最后跑一遍统计答案即可。

 1 #include<cstdio>
 2 #include<iostream>
 3 #include<cmath>
 4 #include<cstring>
 5 #include<algorithm>
 6 #include<cstdlib>
 7 using namespace std;
 8 int p[2000005],n;
 9 char st[2000005];
10 void pre()
11 {
12     p[0]=0; int j=0;
13     for (int i=1; i<=n; i++){
14         while (j>0 && st[j+1]!=st[i+1]) j=p[j];
15         if (st[j+1]==st[i+1]) j++;
16         p[i+1]=j;
17     }
18 }
19 int main()
20 {
21     scanf("%d\n",&n);
22     cin>>st+1;
23     pre();
24     int ans=0;
25     for (int i=1; i<=n; i++){
26         if (!p[i]) continue;
27         if (p[p[i]]) p[i]=p[p[i]];
28     }
29     for (int i=1; i<=n; i++) if (p[i])ans+=i-p[i];
30     cout<<ans<<endl;
31     return 0;
32 }

miao~~~

转载于:https://www.cnblogs.com/wangyh1008/p/9397031.html

Bzoj1511---OKR-Periods of Words(KMP)相关推荐

  1. 基础省选+NOI-第6部分 字符串

    1.Kmp KMP算法 KMP算法_哔哩哔哩_bilibili KMP算法计算next函数值(教材版,超简单!) KMP算法计算next函数值(教材版,超简单!)_哔哩哔哩_bilibili KMP算 ...

  2. kmp求前缀和后缀的最大重复部分

    hdu 2594 kmp水题 求s1的前缀和s2的后缀重复度的最大值 2013-06-05 11:16 1199人阅读 评论(0) 收藏 举报  分类: KMP(8)  版权声明:本文为博主原创文章, ...

  3. BF算法优化-------KMP算法

    百度百科:KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的核心是利用 ...

  4. MUV LUV EXTRA 2019CCPC秦皇岛站J题 KMP

    题目链接 题意:意思给你俩数一个字符串,然后让你对字符串小数点后边的字符串进行处理,找个一个循环节以及对应出现的长度, 然后用a*p-b*l算得到一个最大值 那肯定循环节就想到了KMP了,然后循环长度 ...

  5. 数据结构与算法(5)字符串(BF算法、KMP算法及KMP算法优化)

    目录 一.BF算法(暴力算法) 二.KMP算法 三.KMP算法优化 一.BF算法(暴力算法) 一个一个往后匹配,匹配失败继续从母串下一个和头(子串的头)往后继续匹配. 虽然简单,但是需要较多的时间复杂 ...

  6. 字符串匹配算法 -- BM(Boyer-Moore) 和 KMP(Knuth-Morris-Pratt)详细设计及实现

    文章目录 1. 算法背景 2. BM(Boyer-Moore)算法 2.1 坏字符规则(bad character rule) 2.2 好后缀规则(good suffix shift) 2.3 复杂度 ...

  7. 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)

    震惊!世上最接地气的字符串浅谈(HASH+KMP) 笔者过于垃圾,肯定会有些错的地方,欢迎各位巨佬指正,感激不尽! 引用:LYD的蓝书,一本通,DFC的讲稿,网上各路巨佬 Luguo id: 章鱼那个 ...

  8. hiho 1015 KMP算法 CF 625 B. War of the Corporations

    #1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...

  9. HDU 1711 Number Sequence(KMP算法)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...

  10. 算法(2)KMP算法

    1.0 问题描述 实现KMP算法查找字符串. 2.0 问题分析 "KMP算法"是对字符串查找"简单算法"的优化. 字符串查找"简单算法"是源 ...

最新文章

  1. Drop Down ComboBox
  2. 西数加密linux,Symantec PGP Desktop pgpwded.sys内核驱动任意代码执行漏洞
  3. 一个R包完成单细胞基因集富集分析 (全代码)
  4. php 上传文件 例子,php上传文件实例
  5. PCIE设备与HOST之间的地址转换
  6. 2018年全国大学生电子设计竞赛TI杯赛题简单回顾和准备经验分享
  7. 角色从项目经理转换ScrumMaster的一些思考和总结
  8. 樊登读书会掌控读后感_《掌控谈话》读后感1500字
  9. 计算机的复数形式英语,名词的复数形式大全
  10. 百度云智峰会 百度天像打造多媒体新生态
  11. Endnot引文格式设置随笔
  12. 全文搜索引擎Elasticsearch的初体验:基本概念和操作
  13. STM32学习总结(一)——时钟RCC
  14. 【论文笔记】《SketchMate: Deep Hashing for Million-Scale Human Sketch Retrieval》
  15. matlab中的聚类算法,kmeans聚类算法matlab matlab 聚类算法silhouette
  16. java110 RedPacket 红包系统安装与使用
  17. conda 深度学习 环境卸载 相关命令
  18. php 栏目名称,PHPCMS V9调用栏目ID,栏目名称,父栏目,顶级父栏目
  19. nyoj 203 三国志 dijkstra+01背包
  20. nhmicro添加合同模板管理功能

热门文章

  1. 刷算法的时候有没有必要自写测试用例?
  2. 使用data uri将图片内嵌到html中
  3. 让Sandcastle为你的类库生成类似于MSDN的帮助文档
  4. 王者荣耀s22服务器未响应是什么意思,王者荣耀s22资源包升级失败 s22解析包出现问题解决方法...
  5. Git中的工作区(Working Directory)、暂存区(stage)和历史记录区(history)
  6. 计算机考研数学试卷类型,数学会是你的计算机考研拦路虎吗?
  7. 用幻方编码中文nlp任务
  8. 自编码网络这样应用到任务上可以吗
  9. pytorch lstm 写诗文的魔改,测试,猜想
  10. 神经网络的设计与分析之概述