[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher G POJ 2406
2016-11-03 19:09
381 查看
题目地址:https://vjudge.net/contest/70325#problem/G
思路:题目看错了也是很尴尬。给你一个s串,问你s串作为一串完整循环过得串,最多循环了多少次。先求出最小循环节,然后判断是否完整循环即可。
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1000000+10;
char t[maxn];
int tlen,Next[maxn];
void getNext()
{
int j,k;
j=0,k=-1,Next[0]=-1;
while(j<tlen)
{
if(k==-1 || t[k]==t[j])
Next[++j]=++k;
else
k=Next[k];
}
}
int main()
{
while(scanf("%s",t))
{
if(t[0]=='.')
break;
tlen=strlen(t);
getNext();
int ans=tlen-Next[tlen];
if(ans!=tlen && tlen%ans==0)
printf("%d\n",tlen/ans);
else
printf("1\n");
}
}
思路:题目看错了也是很尴尬。给你一个s串,问你s串作为一串完整循环过得串,最多循环了多少次。先求出最小循环节,然后判断是否完整循环即可。
AC代码:
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int maxn=1000000+10;
char t[maxn];
int tlen,Next[maxn];
void getNext()
{
int j,k;
j=0,k=-1,Next[0]=-1;
while(j<tlen)
{
if(k==-1 || t[k]==t[j])
Next[++j]=++k;
else
k=Next[k];
}
}
int main()
{
while(scanf("%s",t))
{
if(t[0]=='.')
break;
tlen=strlen(t);
getNext();
int ans=tlen-Next[tlen];
if(ans!=tlen && tlen%ans==0)
printf("%d\n",tlen/ans);
else
printf("1\n");
}
}
相关文章推荐
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher H POJ 2752
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher C HDU 2087
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher A HDU 1711
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher L(kmp扩展)
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher B HDU 1686
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher(1) A-H
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher J HDU 2594
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher E HDU 1358
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher 题目分析
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher F HUST 1010
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher K HDU 3336
- 【 题集 】 【kuangbin带你飞】专题十六 KMP & 扩展KMP & Manacher
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher J (kmp扩展)
- [kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher K (kmp扩展)
- [kuangbin带你飞]专题十六 KMP & 扩展KMP
- 最小(大)表示法习题 -- 来自[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher
- POJ 3087 Shuffle'm Up(kuangbin带你飞 专题一:简单搜索)专题一完结
- [kuangbin带你飞]专题一 简单搜索 G - Shuffle'm Up poj 3087
- [kuangbin带你飞]专题一 简单搜索G - Shuffle'm Up(POJ 3087)