题意:
      给你一个字符串,让你找到一些字符串,这个字符串是从第一个字母开始的,并且他可以分成1个一上循环子结构够成的,比如 abcabcabc  那么当前的这个串就是三个abc构成的,他的AK值就是3,对于输出的答案中就会包含当前这个状态,表示为9 3。

思路:
      就像最小路径覆盖是二分匹配的一个景点应用一样,这种循环节的也是KMP的一个应用,结论是 
当 i % (i - next) == 0时,如果 i/(i - next[i]) > 1就输出 i ,i/(i-next[i]);

我对next[i]的理解是,next[i]保存的是当i匹配失败的时候,尽可能的可以不往前跑的那个坐标,也可以说找两个相同的字符串字符串,一个是以失配点前一个点为终点,另一个是以第一个点为起点,这两个串可以交叉但不可以完全相同,最长的这个串的长度的下一个就是匹配失败后可以直接匹配的点,也就是 比如1231231234 假如匹配到4的时候失配了,那么就直接退到123123的后面而不是退到起始点,这样就节省了没必要的比较。


#include<stdio.h>#define N 1000000 + 100

char str[N];
int next[N];void get_next(int m)
{int j ,k;j = 0 ,k = -1;next[0] = -1;while(j < m){if(k == -1 || str[j] == str[k])next[++j] = ++k;elsek = next[k];}return ;
}int main ()
{int n ,i ,cas = 1;while(~scanf("%d" ,&n) && n){scanf("%s" ,str);get_next(n);printf("Test case #%d\n" ,cas ++);for(i = 2 ;i <= n ;i ++){if(i % (i - next[i]))continue;int tmp = i / (i - next[i]);if(tmp > 1)printf("%d %d\n" ,i ,tmp);}printf("\n");}return 0;
}

hdu1358 最小循环节,最大循环次数 KMP相关推荐

  1. 【POJ - 2406】Power Strings (KMP,最小循环节)

    题干: Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc ...

  2. J. MUV LUV EXTRA (KMP求最小循环节)

    原题链接 枚举后缀,KMP求每种后缀的最小循环节,更新最优解. #include <bits/stdc++.h> #define int long long using namespace ...

  3. 2019 CCPC秦皇岛 J 题 MUV LUV EXTRA【KMP 求最小循环节】

    题意: 原题意是给出一个有理数的前一部分,求这个有理数的无限循环部分是什么.有一个值来评估猜的准确度.转换一下就成了下面的题意: 给出一个字符串s,有某一个子串,设p为该子串在s的某个后缀中的匹配长度 ...

  4. Problem A. MUV LUV EXTRA(kmp求最小循环节)

    LINK 最小化 a ∗ p − b ∗ l a*p-b*l a∗p−b∗l 其中 p p p表示循环节总长, l l l表示循环节长度 若循环节从 i i i位置开始,那么一定需要延续到末尾 考虑固 ...

  5. 妙用next数组打表求最小循环节len

    https://www.cnblogs.com/njczy2010/p/3930688.html https://blog.csdn.net/dominating413421391/article/d ...

  6. 周期(KMP找最小循环节)

    Description: 一个字符串的前缀是从第一个字符开始的连续若干个字符,例如"abaab"共有5个前缀,分别是a, ab, aba, abaa, abaab. 我们希望知道一 ...

  7. HDU - 1358 Period(KMP的next数组求最小循环节)

    题目链接:点击查看 题目大意:给出一个长度为n的字符串,问有哪些前缀是周期性字符串 题目分析:因为n给的很大,所以肯定不能暴力判断了,我们可以巧妙的利用kmp的next数组进行判断,next数组有一个 ...

  8. MUV LUV EXTRA(Kmp找最小循环节)

    MUV LUV EXTRA [Link](Problem - J - Codeforces) 题意 给你a和b和一个小数,让你找 a × 循 环 节 出 现 到 结 尾 的 长 度 + b × 循 环 ...

  9. POJ - 1961 最小循环节

    如果循环节存在那在前缀部分也肯定存在 如果循环节存在那至少是可以匹配的 而next是维护最大前缀的,意会意会 注意一定要先判整除,即使别的题目保证是存在循环的 特意画了一张灵魂草图帮助理解 #incl ...

最新文章

  1. Mon Nov 18 01:40:52 CST 2019 WARN: Establishing SSL connection without server's identity verificatio
  2. acf滞后数必须为正整数。_【知识点】“勾股定理”的必考点,必须掌握!
  3. es最新的集群选举策略
  4. 图形推理1000题pdf_普华永道 网申笔试 OT 含泪总结归纳 - 逻辑推理
  5. VHDL其他顺序语句
  6. 数据库系统的三级模式结构知识笔记
  7. 【Java】synchronized关键字笔记
  8. [Editor][003][Emacs] 从零到高级的进阶 - 实践开发 - emacs tutorial的使用和基本导航键
  9. php分页类示例下载,PHP 通用分页类的简单示例
  10. mysql查询的是问号_MySQL客户端查询中文显示为问号(linux) | 学步园
  11. 完全开源的杀病毒软件ClamAV
  12. 2018.08.21随笔
  13. 游戏筑基开发之初识指针
  14. 10000以内的素数。
  15. 小程序和Android开发,微信小程序和Android开发的对比
  16. Keil MDK5安装详细步骤
  17. 五笔:25 个一级简码(口诀)
  18. 网吧服务器维护工具,某某网吧专用维护工具(网吧维护管理助手)V5.1 最新版
  19. win10 SystemParametersInfo 设置屏保 不好使_火爆抖音的旋转时钟屏保,超酷超炫的...
  20. ubuntu 刷新频率 如何查看_Ubuntu Linux系统屏幕刷新率问题的解决

热门文章

  1. 使用 C# 开发智能手机软件:推箱子(十二)
  2. STORM_0001_用vmware拷贝出三个相同的ubuntu搭建小的zookeeper集群
  3. Device.js——检测设备平台、操作系统的Javascript 库
  4. Android控件系列之RadioButtonRadioGroup
  5. 网页中Javascript代码的应用方式
  6. Solr字段类型field type的定义
  7. 看jquery3.3.1学js类型判断的技巧
  8. Mint UI 使用指南
  9. python后端工程师 数据爬虫
  10. JQuery面试题1