fzu 1901 next+脑洞
题目大意:
给你一个字符串str,对于每个str长度为p的前缀,如果str[i]==str[p+i](p+i<len),那么我们认为它是一个periodic prefixs.求所有满足题意的前缀的长度p
基本思路:
#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;
else
j = 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;
}
fzu 1901 next+脑洞的更多相关文章
- (KMP Next的运用) Period II -- fzu -- 1901
http://acm.fzu.edu.cn/problem.php?pid=1901 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=703 ...
- FZU - 1901 Period II (kmp)
传送门:FZU - 1901 题意:给你个字符串,让你求有多少个p可以使S[i]==S[i+P] (0<=i<len-p-1). 题解:这个题是真的坑,一开始怎么都觉得自己不可能错,然后看 ...
- FZU 1901 Period II(KMP循环节+公共前后缀)
题目链接:http://acm.fzu.edu.cn/problem.php?pid=1901 题目大意:题目大意求出所有p满足s[i]=s[i+p](i<=len-p) 解题思路: 其实就是要 ...
- Period II - FZU 1901(KMP->next)
题目大意:给你一个字符串 S ,N = |S|,如果存在一个 P (1<=P<=N),并且满足 s[i] = s[P+i] (i = {0...N-P-1} ),求出来所有的 P 然后输出 ...
- FZU - 1901 Period II(kmp所有循环节)
Problem Description For each prefix with length P of a given string S,if S[i]=S[i+P] for i in [0..SI ...
- FZU 1901 Period II(KMP中的next)题解
题意:给你一串字符串,问你前后缀相同情况有几种,并输出后缀位置(?这里一直没看懂length是什么,但是这样理解答案也对,然后还要加上本身长度) 思路:这里好好讲讲next的用法.我们都知道next代 ...
- Period II FZU - 1901(拓展kmp)
拓展kmp板题 emm...我比较懒 最后一个字母进了vector两个1 不想改了...就加了个去重... 哈哈 #include <iostream> #include <cst ...
- [FZU 1901]Period II KMP
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 ...
- KMP总结
首先给一个我能看懂的KMP讲解: http://blog.csdn.net/v_july_v/article/details/7041827 来自大神july 文章很长,但是慢慢看,会发现讲的很好. ...
随机推荐
- memcache、mongodb、redis的对比区别
>>Memcached Memcached的优点:Memcached可以利用多核优势,单实例吞吐量极高,可以达到几十万QPS(取决于key.value的字节大小以及服务器硬件性能,日常环境 ...
- Python和 pytest的异常处理
Python中有自带的异常处理 try: except: pytest中 1.可以用try except来处理,来保证出错后,把后面的语句执行完成: 2.当有多条用例需要跑完时,不需要考虑其中一条用例 ...
- 【和孩子一起学编程】 python笔记--第二天
第六章 GUI:用户图形界面(graphical user interface) 安装easygui:打开cmd命令窗口,输入:pip install easygui 利用msgbox()函数创建一个 ...
- Eu
<parent> <artifactId>microservice-cloud-01</artifactId> <groupId>com.mengx ...
- while循环语句基础
while循环语句基础 一while循环语句介绍 循环语句命令常用于重复执行一条指令或一组指令,直到条件不再满足时停止, Shell脚本语言的循环语句常见的有while, until, for及s ...
- Integer之常用方法
public static int parseInt(String s, int radix) throws NumberFormatException {} // radix进制 s 换成 10进制 ...
- AcWing 224. 计算器 (BSGS算法)打卡
题目:https://www.acwing.com/problem/content/226/ 题意:有一个计算器能完成三种功能 1.给定Y,Z,P,计算YZModPYZModP 的值: 2.给定Y,Z ...
- Django基础篇(二)与mysql配合使用
需求:模拟实现学员管理系统.<*_* 从基础做起> 表结构如下: 班级/学生/老师 班级表: id title 1 xx 2 xx 学生表: id name ...
- DBA-io
- python re模块常用的正则表达式
'.' 默认匹配除\n之外的任意一个字符,若指定flag DOTALL,则匹配任意字符,包括换行 '^' 匹配字符开头,若指定flags MULTILINE,这种也可以匹配上(r&qu ...