OKR−PeriodsofWordsOKR-Periods\ of\ WordsOKR−Periods of Words

题目描述见链接 .


正解部分\color{red}{正解部分}正解部分

题目转化 为: 对每个前缀串, 求出其 最短公共前缀后缀, 答案即为 总长度 −-− 公共长度 .

自然而然地想到 KmpKmpKmp 的 next[]next[]next[] 数组, 但是 KmpKmpKmp 中的 next[]next[]next[] 数组 表示的是 最长公共前缀后缀, 考虑怎么转化,

不断执行 next[i]=next[next[i]]next[i] = next[next[i]]next[i]=next[next[i]], 直到 next[i]next[i]next[i] 将要等于 000, 这时 next[i]next[i]next[i] 就是 最短公共前缀后缀 了 .


实现部分\color{red}{实现部分}实现部分

#include<bits/stdc++.h>
#define reg register
typedef long long ll;const int maxn = 1e6 + 5;int N;
int nxt[maxn];char S[maxn];void Get_next(){nxt[0] = -1;int i = 0, t = -1;while(i < N){if(t == -1 || S[i] == S[t]) nxt[++ i] = ++ t;else t = nxt[t];}
}int main(){scanf("%d", &N); scanf("%s", S); Get_next();ll Ans = 0; nxt[0] = 0;for(reg int i = 1; i <= N; i ++){if(!nxt[i]) continue ;     while(nxt[nxt[i]]) nxt[i] = nxt[nxt[i]];if(nxt[i] < i) Ans += i - nxt[i];}printf("%lld\n", Ans);return 0;
}

P3435 [POI2006]OKR-Periods of Words [Kmp, next数组]相关推荐

  1. 【题解】洛谷P3435 [POI2006] OKR-Periods of Words(KMP)

    洛谷P3435:https://www.luogu.org/problemnew/show/P3435 思路 来自Kamijoulndex大佬的解释 先把题面转成人话: 对于给定串的每个前缀i,求最长 ...

  2. P3435 [POI2006]OKR-Periods of Words kmp + fail指针

    传送门 文章目录 题意: 思路: 题意: 思路: 转换一下题意,就是求一个最小公共前后缀,显然可以暴跳nenene数组,复杂度O(n2)O(n^2)O(n2),注意到我们每次都跳的话会跳到很多重复的位 ...

  3. [POI2006]OKR-Periods of Words(KMP)

    题意:给定一个字符串,求它的每个前缀的的一个最长前缀,使得它重复两边后能够覆盖原串. Solution 这题显然要在KMP的next数组上做一些手脚. 对于一个前缀,我们把它重复两遍,那么这个前缀的前 ...

  4. P3435 [POI2006]OKR-Periods of Words

    传送门 KMP 对于这种一个字符串的问题 肯定先考虑KMP 如果一个串A要成为周期 设A长度为len_A,原串长度为len 那么串A要成为周期的充分必要条件就是: 从0 ~ (len-len_A)的串 ...

  5. POJ3080方法很多(暴力,KMP,后缀数组,DP)

    题意:       给n个串(n>=2&&n<=10),每个串长度都是60,然后问所有串的最长公共子串,如果答案不唯一输出字典序最小的. 思路:直接暴力,枚举+KMP,后缀 ...

  6. kmp——next数组的应用---cout the string

    点击打开链接 这道题的意思是找出每个子串与串的匹配程度,换句话说题意是,给一串字符串,问这串字符串所有的前缀总共在这个字符串中出现了几次.一开始直接想到的事用暴力求解但是算了一下会超时. 其实准确来说 ...

  7. 【2023王道数据结构】【字符串匹配算法】字符串的KMP(next数组)模式匹配算法C、C++完整实现(可直接运行)

    ~~~笔锋至此又怎能平淡而终,故事开始便不承认普通✌✌✌ ✌ 题目及题解持续更新中 [2023王道数据结构目录]课后算法设计题C.C++代码实现完整版大全 题目: 字符串的KMP(next)模式匹配算 ...

  8. HGU3336 Count the string (KMP Next数组的应用)

    题意:给出一个字符串,求它所有前缀在此字符串中出现的次数. 分析:一看,肯定是kmp中 next[i] 求以下标i-1结尾的字符串,使得最长的(前缀==后缀)的长度.很好想到,当next非零时,肯定和 ...

  9. “科林明伦杯”哈尔滨理工大学第十届程序设计竞赛——J.最大值【KMP next数组】【暴力(数据太水了!)】

    题目传送门 题解 Ac串其实是kmp中next数组的含义,所以求 出字符串的next数组 即可得到答案. 不得不说,后台数据问题太大了,直接暴力 n 2 n^2 n2 的都能过!服了这数据 AC-Co ...

  10. 2019年秦皇岛J题:MUV LUV EXTRA(KMP后缀数组)

    Problem Description 鉴纯夏是一名成绩不太好的高中生.一天她在数学考试中碰到了一道求某条线段长度的问题.因为她并不会做这道题,所以她准确地作图后用尺子量出了这条线段的长度.不幸的是, ...

最新文章

  1. 字段定义_两大高招逐浪CMS中定义省地市县三级字段显示方式
  2. C#委托、事件、消息(入门级)
  3. change all day checkbox in Fiori ui
  4. Mybatis-plus 大数据量数据流式查询通用接口
  5. 单片机的内存分配(变量的存储位置)详解
  6. 我的第一次随笔——胡桂玲
  7. Codeforces 768B - Code For 1(分治思想)
  8. 管理九段,你的管理入围“几段”了?
  9. 联想交换机服务器型号,Dell Networking X系列交换机
  10. 机械硬盘显示位置不可用无法访问介质受写入保护
  11. 修改gh-ost源码实现两表在线高速复制
  12. fractions -- 分数
  13. 世界各国信用评级[来自维基百科]
  14. 链路聚合原理及配置过程
  15. 电脑显示器不亮的三种原因和解决方法
  16. 在UTF-8下写字库
  17. php windows vld,PHP安装VLD查看opcode
  18. 「Python语法结构」数据类型与运算符示例(7)
  19. android请求广告展示失败,玩咖优盟移动广告平台
  20. 【汇正财经】股票和债券的区别有哪些?哪个风险比较小?

热门文章

  1. 树莓派 Pico ADC温度测量
  2. 哪有什么太迟,世界多的是大器晚成
  3. postgresql: the application server could not be contacted --2020-11-17
  4. 000webhost提供 1500M免费空间 可绑顶级域名
  5. 用MATLAB对语音进行基频搬移,语音信号变声处理系.doc
  6. os_pend_multi.c
  7. 网站架构资料收集整理
  8. 性能测试LoadRunner
  9. Linux--用xmanager远程管理的设定过程
  10. 3. 项目立项三板斧-建议书-可行性研究-评估论证