题目链接:http://poj.org/problem?id=2406

题意:就是求串s能够最多由多少个相同的串a串联而成;

例如 ababab 由3个ab串联而成;

abababa 只能由1个abababa组成;

kmp中的Next[n](下标从0开始)表示n个元素的前缀和后缀的最大匹配;

  a b a b a b a b

 0 1 2 3 4 5 6 7

0-5和2-7是最大匹配Next【n】= 6;ab就是循环节(因为n/(n-next[n])是整数,所以是循环节)即 n - Next【n】;

#include<stdio.h>
#include<iostream>
#include<algorithm>
#include<string.h>
using namespace std; #define N 1000010 char s[N];
int Next[N], n; void Getnext()
{
int i = , j = -;
Next[] = -;
while(i<n)
{
if(j==- || s[i] == s[j])
Next[++i] = ++j;
else
j=Next[j];
}
} int main()
{
while(scanf("%s", s),s[]!='.')
{
n = strlen(s); Getnext(); int ans = n-Next[n]; if(n%ans!=)
ans = ;
else
ans = n/ans;
printf("%d\n", ans);
}
return ;
}
/*
aabaabaa
1
*/

Power Strings----poj2406(kmp扩展 循环节)的更多相关文章

  1. poj 2406 Power Strings【字符串+最小循环节的个数】

                                                                                                      Po ...

  2. Power Strings POJ2406 KMP 求最小循环节

    相比一般KMP,构建next数组需要多循环一次,因为next[j]代表前j-1个字符的最长相同前缀后缀,比如字符串为aab aab aab共9个字符,则next[10]等于前9个字符中最长相同前缀后缀 ...

  3. poj2406 Power Strings(kmp)

    poj2406 Power Strings(kmp) 给出一个字符串,问这个字符串是一个字符串重复几次.要求最大化重复次数. 若当前字符串为S,用kmp匹配'\0'+S和S即可. #include & ...

  4. HDU 3746 Cyclic Nacklace (KMP求循环节问题)

    <题目链接> 题目大意: 给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数. [>>>kmp next函数 kmp的周期问题]  #include &l ...

  5. ( KMP 求循环节的个数)Power Strings -- poj -- 2406

    链接: http://poj.org/problem?id=2406 Power Strings Time Limit:3000MS     Memory Limit:65536KB     64bi ...

  6. poj2406 Power Strings(kmp失配函数)

    Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 39291 Accepted: 16315 Descr ...

  7. 【POJ2406】 Power Strings (KMP)

    Power Strings Description Given two strings a and b we define a*b to be their concatenation. For exa ...

  8. poj2406 Power Strings 【KMP】

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

  9. POJ2406 Power Strings 【KMP 或 后缀数组】

    电源串 时间限制: 3000MS   内存限制: 65536K 提交总数: 53037   接受: 22108 描述 给定两个字符串a和b,我们定义a * b是它们的连接.例如,如果a =" ...

  10. KMP与循环节相关题目

    HDU 3746 Cyclic Nacklace ( KMP求最小循环节 ) len - nextval[len]即为最小循环节长度. #include <cstdio> #include ...

随机推荐

  1. android bitmap compress

    android的照相功能随着手机硬件的发展,变得越来越强大,能够找出很高分辨率的图片. 有些场景中,需要照相并且上传到服务,但是由于图片的大小太大,那么就上传就会很慢(在有些网络情况下),而且很耗流量 ...

  2. GPIO 输入—按键检测

    这里要用到一定的模电知识.电容两端电压不能突变,电感两端电流不能突变.这里利用了电容的放电延时实现硬件消抖.按键按下会有抖动,波形有毛刺,使得高低电平显现不明显,而按键按下时,电容放电一下,马上又被充 ...

  3. 本系列love2d示例代码错误集中整理

    3.输入和音乐 音乐不是循环播放的,可以在love.audio.play(music) 之前添加music:setLooping(true)

  4. ad7888 linux driver

    /* ADCCONVERT.c : Generate ADC signals from SPI ports, as the A/D control signals. Author:  Aaron Fu ...

  5. 微信小程序 - WapRequest.js

    文件位于 utils/WapRequest.js 封装了所有接口请求和wap站点的controller请求,代码示例 /** * 选择 洲 国家 * 无参数 */ WapRequest.prototy ...

  6. Easy UI分页控件修改刷新方法后触发两次请求

    今天我在做分页的时候,有这样的一个现象: 我重写了分页的刷新和改变页面大小的方法,发现给服务器提交了两次post,问题出现在哪里的?经过alert调试,发现原因是: 刷新和改变页面大小的事件执行的时候 ...

  7. 分析HTML5中WebSocket的原理

    目录结构   一.什么是Websocket websocket是html5提出的一个协议规范,参考rfc6455. 不过目前还都是在草案,没有成为标准,毕竟html5还在路上. websocket约定 ...

  8. JobTracker作业启动过程分析

    转自:http://blog.csdn.net/androidlushangderen/article/details/41356521 在Hadoop中,启动作业运行的方式有很多,可以用命令行格式把 ...

  9. XMPP客户端

    1. Strophe.js 2. Converse.js

  10. Gradle学习系列

    http://www.cnblogs.com/davenkin/p/gradle-learning-1.html