题目大意:

给你一个字符串str,对于每个str长度为p的前缀,如果str[i]==str[p+i](p+i<len),那么我们认为它是一个periodic prefixs.求所有满足题意的前缀的长度p

基本思路:

•KMP算法中next数组的含义是什么?
•next数组:失配指针
•如果目标串的当前字符i在匹配到模式串的第j个字符时失配,那么我们可以让i试着去匹配next(j)
•对于模式串str,next数组的意义就是:
•如果next(j)=t,那么str[1…t]=str[len-t+1…len]
•我们考虑next(len),令t=next(len);
•next(len)有什么含义?
•str[1…t]=str[len-t+1…len]
•那么,长度为len-next(len)的前缀显然是符合题意的。
•接下来我们应该去考虑谁?
•t=next( next(len) );
•t=next( next (next(len) ) );
• 一直下去直到t=0,每个符合题意的前缀长是len-t
代码如下:
#include<stdio.h>
#include<string.h>
#include<algorithm>
#include<stdlib.h>
using namespace std;const int N = 1e6+7;char s[N];
int Next[N], ans[N];void GetNext(char a[], int n)
{int i=0, j=-1;Next[0] = -1;while(i<n){if(j==-1 || a[i]==a[j])Next[++i] = ++j;elsej = Next[j];}
}int main()
{int T, t=1, k, len;scanf("%d", &T);while(T--){scanf("%s", s);len = strlen(s);GetNext(s, len);k = 0;for(int j=len; j>0; j=Next[j])ans[k++] = len - Next[j];printf("Case #%d: %d\n", t++, k);for(int i=0; i<k; i++)printf("%d%c", ans[i], i==k-1?'\n':' ');}return 0;
}

转载于:https://www.cnblogs.com/imzscilovecode/p/8119863.html

fzu 1901 next+脑洞相关推荐

  1. FZU 1901 Period II(KMP中的next)题解

    题意:给你一串字符串,问你前后缀相同情况有几种,并输出后缀位置(?这里一直没看懂length是什么,但是这样理解答案也对,然后还要加上本身长度) 思路:这里好好讲讲next的用法.我们都知道next代 ...

  2. kuangbin带你飞专题合集

    题目列表 [kuangbin带你飞]专题一 简单搜索 [kuangbin带你飞]专题二 搜索进阶 [kuangbin带你飞]专题三 Dancing Links [kuangbin带你飞]专题四 最短路 ...

  3. 算法学习经典例题整理

    陆续会对本篇博客进行更新! 搜索:https://vjudge.net/contest/292597 区间DP:https://vjudge.net/contest/293892 树状背包:https ...

  4. [kuangbin]各种各样的题单

    [kuangbin]各种各样的题单 专题1 简单搜索 POJ 1321 POJ 2251 POJ 3278 POJ 3279 POJ 1426 POJ 3126 POJ 3087 POJ 3414 F ...

  5. android的多行文本框的值,Swift - 多行文本输入框(UITextView)

    防止SQL注入攻击 了解了SQL注入的方法,如何能防止SQL注入?如何进一步防范SQL注入的泛滥?通过一些合理的操作和配置来降低SQL注入的危险. 使用参数化的过滤性语句 要防御SQL注入,用户的输入 ...

  6. FZU1901 Period II

    题目链接:FZU1901 Q - Period II Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & ...

  7. kuangbin带你飞 专题1-23 题单

    kuangbin大神,对于打过ACM比赛的ACMer,无人不知无人不晓. 在此,附上vjudge平台上一位大神整理的[kuangbin带你飞]专题目录链接. [kuangbin带你飞专题目录1-23] ...

  8. 老鱼的-kuangbin专题题解

    kuangbin专题问题一览 专题一 简单搜索 POJ 1321 棋盘问题 POJ 2251 Dungeon Master POJ 3278 Catch That Cow POJ 3279 Flipt ...

  9. fzu 2150 Fire Game 【身手BFS】

    称号:fzu 2150 Fire Game :给出一个m*n的图,'#'表示草坪,' . '表示空地,然后能够选择在随意的两个草坪格子点火.火每 1 s会向周围四个格子扩散,问选择那两个点使得燃烧全部 ...

最新文章

  1. python 导出数据并发邮件_Python自动化导出zabbix数据并发邮件脚本
  2. 嵌入式c语言汇编混合编程,嵌入式C语言和汇编语言的混合编程
  3. 升级版记事本 Notepad++
  4. 00003-回文数的判定-leetcode-解法不唯一,1.reverse最简单,2.数学方法很有意思
  5. python控制语句第一章_python基础第一章
  6. Linux SSH保持连接(解决Broken pipe)
  7. SilverLight幻灯片
  8. java中对事件的监听事件,详谈Java中的事件监听机制
  9. 异常重试_面试题:如何基于 dubbo 进行服务治理、服务降级、失败重试?
  10. 各种求最大公约数的函数
  11. 火爆业界的明星,下一代存储技术的先行: NVDIMM 你了解吗?
  12. 成为大数据工程师需要具备什么能力?发展前景好么
  13. 机器学习:SVM支持向量机理解
  14. 安卓自动操作软件 AUTO.JS 4.1.1 ALPHA2 免费版下载
  15. 误删照片音视频文件不要担心 几种方法解救慌乱的你
  16. 无人配送这半年:从风口到浪潮
  17. 【数据库】数据库的安全性
  18. Win10 年度最重大更新:代码、理想与爱
  19. 送给程序员的话 - 大牛们的经典语录
  20. laravel 创建自定义中间件

热门文章

  1. SRM596 DIV2 250
  2. Excel实战技巧之[活用条件格式]
  3. Redis第四集:redis的基本知识说明
  4. fj怎么样_一朝中毒普拉多,万能解药FJ酷路泽
  5. matlab神经网络的简单程序设计,BP神经网络设计的matlab简单实现
  6. linux命令行tcp连接,linux下2个检查tcp连接的命令
  7. 华为麒麟810芯片鸿蒙,华为自研麒麟810实体芯片首曝光 传说中的“鸿蒙”要来了?...
  8. 分享一个高质量的 小程序UI框架
  9. Java中生产者与消费者问题的演变
  10. Python之配置日志模块logging