Problem Description

For each prefix with length P of a given string S,if
S[i]=S[i+P] for i in [0..SIZE(S)-p-1],

then the prefix is a “period” of S. We want to all the periodic prefixs.

Input

Input contains multiple cases.
The first line contains an integer T representing the number of cases. Then following T cases.

Each test case contains a string S (1 <= SIZE(S) <= 1000000),represents the title.S consists of lowercase ,uppercase letter.

Output

For each test case, first output one line containing "Case #x: y", where x is the case number (starting from 1) and y is the number of periodic prefixs.Then output the lengths of the periodic prefixs in ascending order.

Sample Input

4
ooo
acmacmacmacmacma
fzufzufzuf
stostootssto

Sample Output

Case #1: 3
1 2 3
Case #2: 6
3 6 9 12 15 16
Case #3: 4
3 6 9 10
Case #4: 2
9 12

题意:t 组数据,每组给出一个字符串,对于字符串的所有前缀,若存在循环节,输出这个字符串的符合条件的个数与这个字符串的长度

思路:思路与 Seek the Name, Seek the Fame(POJ-2752)类似,但输出的不是循环节的长度,而是前缀子串的长度,此外需要统计符合条件的子串个数,可利用队列来统计输出

Source Program

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#define PI acos(-1.0)
#define E 1e-9
#define INF 0x3f3f3f3f
#define N 1000001
#define LL long long
const int MOD=20091226;
const int dx[]= {-1,1,0,0};
const int dy[]= {0,0,-1,1};
using namespace std;int Next[N];
char p[N];
int n;
void getNext(){Next[0]=-1;int len=strlen(p);int j=0;int k=-1;while(j<len){if(k==-1||p[j]==p[k]) {k++;j++;Next[j]=k;}else{k=Next[k];}}
}
int main(){int t;scanf("%d",&t);int Case=1;while(t--){scanf("%s",p);int len=strlen(p);getNext();int i=len;queue<int> Q;while(i){i=Next[i];Q.push(i);}printf("Case #%d: %d\n",Case++,Q.size());printf("%d",len-Q.front());Q.pop();while(!Q.empty()){printf(" %d",len-Q.front());Q.pop();}printf("\n");}return 0;
}

Period II(FZU-1901)相关推荐

  1. 2019 ACM - ICPC 上海网络赛 E. Counting Sequences II (指数型生成函数)

    繁凡出品的全新系列:解题报告系列 -- 超高质量算法题单,配套我写的超高质量题解和代码,题目难度不一定按照题号排序,我会在每道题后面加上题目难度指数(1∼51 \sim 51∼5),以模板题难度 11 ...

  2. Leetcode95. 不同的二叉搜索树 II(C语言)

    Leetcode95. 不同的二叉搜索树 II(C语言) 算法-分治:算法与数据结构参考 题目: 给定一个整数 n,生成所有由 1 - n 为节点所组成的二叉搜索树1.例: 输入: 3 输出: [ [ ...

  3. LeetCode 1901. 找出顶峰元素 II(二分查找)

    文章目录 1. 题目 2. 解题 1. 题目 一个 2D 网格中的 顶峰元素 是指那些 严格大于 其相邻格子(上.下.左.右)的元素. 给你一个 从 0 开始编号 的 m x n 矩阵 mat ,其中 ...

  4. CAU 人工智能II(2022春) 课程期末复习 - 大纲整理

    0. 前沿 CAU 2022春 人工智能II为线上考试,考前进行了复习整理,在此记录. 本次复习将其分成4个部分:1) 强化学习:2)深度学习与CV:3)循环神经网络与NLP:4)GAN 简答题整理见 ...

  5. 实习笔记 —— Git II(远程提交)

    系列文章目录 实习笔记 -- Spring基础 实习笔记 -- IOC反转控制(xml配置文件 + 注解) 实习笔记 -- AOP开发I 实习笔记 -- AOP开发II(AOP中Advice的类型) ...

  6. 翻翻棋 (FZU - 2230)

    题目链接:C - 翻翻棋 来源: FZU - 2230 Problem Description 象棋翻翻棋(暗棋)中双方在4*8的格子中交战,有时候最后会只剩下帅和将.根据暗棋的规则,棋子只能上下左右 ...

  7. LeetCode算法题-Valid Palindrome II(Java实现)

    这是悦乐书的第287次更新,第304篇原创 01 看题和准备 今天介绍的是LeetCode算法题中Easy级别的第155题(顺位题号是680).给定非空字符串s,最多可以删除一个字符. 判断它是否是回 ...

  8. leetcode 137. 只出现一次的数字 II(位运算)

    给你一个整数数组 nums ,除某个元素仅出现 一次 外,其余每个元素都恰出现 三次 .请你找出并返回那个只出现了一次的元素. 示例 1: 输入:nums = [2,2,3,2] 输出:3 示例 2: ...

  9. leetcode 122. 买卖股票的最佳时机 II(贪心算法)

    给定一个数组,它的第 i 个元素是一支给定股票第 i 天的价格. 设计一个算法来计算你所能获取的最大利润.你可以尽可能地完成更多的交易(多次买卖一支股票). 注意:你不能同时参与多笔交易(你必须在再次 ...

  10. LeetCode 1586. 二叉搜索树迭代器 II(数组+栈)

    文章目录 1. 题目 2. 解题 1. 题目 实现二叉搜索树(BST)的中序遍历迭代器 BSTIterator 类: BSTIterator(TreeNode root) 初始化 BSTIterato ...

最新文章

  1. 你真懂JavaScript吗?
  2. 关于HTML Object中三个Style实例的区别
  3. 1069: [SCOI2007]最大土地面积 - BZOJ
  4. 计算机网络:如何传输一条数据(详解)
  5. c#精彩编程200例百度云_永安市教育局被授予“人工智能编程教育试验区”
  6. Python:正则表达式
  7. 尽量用iterator代替const_iterator
  8. msf拿shell后中文乱码解决
  9. 常见的几种网络抓包及协议分析工具
  10. My God,CImage裁剪图片变成黑色了
  11. 亲测有效 抖音视频如何批量去水印下载原视频2020-09-16
  12. QT学习第一步 QT下载及安装详细步骤
  13. 义乌中学集训(没打的题慢慢补)
  14. 聚美优品API 根据关键词取商品列表 Onebound电商平台数据
  15. 超有爱的并查集 6666
  16. 基于snipe-it v5.1.2开源资产管理软件二次开发安卓端管理app
  17. 做毕设|墨墨背单词+单词本(小程序)01
  18. Hbase 内置过滤器
  19. 信号幅值归一化(Python)
  20. 2023校招美团第三次笔试

热门文章

  1. STM32之SysTick例程
  2. uboot启动第一阶段——start.S
  3. B站疯传!堪称最强!一整套架构实战资料,白拿不谢!
  4. 刘朋:程序员如何练就领导力
  5. 积木报表对比帆软报表有什么区别?
  6. 教你使用Vue.js的DevTools来调试你的vue项目
  7. JeeWx 捷微 2.2 发布,微信管家平台
  8. 职场 | 工作五年之后,对技术和业务的思考
  9. 虚拟机系列 | JVM特点,基础结构与执行周期
  10. 百度网盘不限速下载神器献给你