Bzoj1511---OKR-Periods of Words(KMP)
(传送门)
大意:对于给定串的每个前缀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)相关推荐
- 基础省选+NOI-第6部分 字符串
1.Kmp KMP算法 KMP算法_哔哩哔哩_bilibili KMP算法计算next函数值(教材版,超简单!) KMP算法计算next函数值(教材版,超简单!)_哔哩哔哩_bilibili KMP算 ...
- kmp求前缀和后缀的最大重复部分
hdu 2594 kmp水题 求s1的前缀和s2的后缀重复度的最大值 2013-06-05 11:16 1199人阅读 评论(0) 收藏 举报 分类: KMP(8) 版权声明:本文为博主原创文章, ...
- BF算法优化-------KMP算法
百度百科:KMP算法是一种改进的字符串匹配算法,由D.E.Knuth,J.H.Morris和V.R.Pratt提出的,因此人们称它为克努特-莫里斯-普拉特操作(简称KMP算法).KMP算法的核心是利用 ...
- MUV LUV EXTRA 2019CCPC秦皇岛站J题 KMP
题目链接 题意:意思给你俩数一个字符串,然后让你对字符串小数点后边的字符串进行处理,找个一个循环节以及对应出现的长度, 然后用a*p-b*l算得到一个最大值 那肯定循环节就想到了KMP了,然后循环长度 ...
- 数据结构与算法(5)字符串(BF算法、KMP算法及KMP算法优化)
目录 一.BF算法(暴力算法) 二.KMP算法 三.KMP算法优化 一.BF算法(暴力算法) 一个一个往后匹配,匹配失败继续从母串下一个和头(子串的头)往后继续匹配. 虽然简单,但是需要较多的时间复杂 ...
- 字符串匹配算法 -- BM(Boyer-Moore) 和 KMP(Knuth-Morris-Pratt)详细设计及实现
文章目录 1. 算法背景 2. BM(Boyer-Moore)算法 2.1 坏字符规则(bad character rule) 2.2 好后缀规则(good suffix shift) 2.3 复杂度 ...
- 【笔记】震惊!世上最接地气的字符串浅谈(HASH+KMP)
震惊!世上最接地气的字符串浅谈(HASH+KMP) 笔者过于垃圾,肯定会有些错的地方,欢迎各位巨佬指正,感激不尽! 引用:LYD的蓝书,一本通,DFC的讲稿,网上各路巨佬 Luguo id: 章鱼那个 ...
- hiho 1015 KMP算法 CF 625 B. War of the Corporations
#1015 : KMP算法 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在 ...
- HDU 1711 Number Sequence(KMP算法)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1711 Number Sequence Time Limit: 10000/5000 MS (Java/ ...
- 算法(2)KMP算法
1.0 问题描述 实现KMP算法查找字符串. 2.0 问题分析 "KMP算法"是对字符串查找"简单算法"的优化. 字符串查找"简单算法"是源 ...
最新文章
- Drop Down ComboBox
- 西数加密linux,Symantec PGP Desktop pgpwded.sys内核驱动任意代码执行漏洞
- 一个R包完成单细胞基因集富集分析 (全代码)
- php 上传文件 例子,php上传文件实例
- PCIE设备与HOST之间的地址转换
- 2018年全国大学生电子设计竞赛TI杯赛题简单回顾和准备经验分享
- 角色从项目经理转换ScrumMaster的一些思考和总结
- 樊登读书会掌控读后感_《掌控谈话》读后感1500字
- 计算机的复数形式英语,名词的复数形式大全
- 百度云智峰会 百度天像打造多媒体新生态
- Endnot引文格式设置随笔
- 全文搜索引擎Elasticsearch的初体验:基本概念和操作
- STM32学习总结(一)——时钟RCC
- 【论文笔记】《SketchMate: Deep Hashing for Million-Scale Human Sketch Retrieval》
- matlab中的聚类算法,kmeans聚类算法matlab matlab 聚类算法silhouette
- java110 RedPacket 红包系统安装与使用
- conda 深度学习 环境卸载 相关命令
- php 栏目名称,PHPCMS V9调用栏目ID,栏目名称,父栏目,顶级父栏目
- nyoj 203 三国志 dijkstra+01背包
- nhmicro添加合同模板管理功能
热门文章
- 刷算法的时候有没有必要自写测试用例?
- 使用data uri将图片内嵌到html中
- 让Sandcastle为你的类库生成类似于MSDN的帮助文档
- 王者荣耀s22服务器未响应是什么意思,王者荣耀s22资源包升级失败 s22解析包出现问题解决方法...
- Git中的工作区(Working Directory)、暂存区(stage)和历史记录区(history)
- 计算机考研数学试卷类型,数学会是你的计算机考研拦路虎吗?
- 用幻方编码中文nlp任务
- 自编码网络这样应用到任务上可以吗
- pytorch lstm 写诗文的魔改,测试,猜想
- 神经网络的设计与分析之概述