Power Strings----poj2406(kmp扩展 循环节)
题目链接: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扩展 循环节)的更多相关文章
- poj 2406 Power Strings【字符串+最小循环节的个数】
Po ...
- Power Strings POJ2406 KMP 求最小循环节
相比一般KMP,构建next数组需要多循环一次,因为next[j]代表前j-1个字符的最长相同前缀后缀,比如字符串为aab aab aab共9个字符,则next[10]等于前9个字符中最长相同前缀后缀 ...
- poj2406 Power Strings(kmp)
poj2406 Power Strings(kmp) 给出一个字符串,问这个字符串是一个字符串重复几次.要求最大化重复次数. 若当前字符串为S,用kmp匹配'\0'+S和S即可. #include & ...
- HDU 3746 Cyclic Nacklace (KMP求循环节问题)
<题目链接> 题目大意: 给你一个字符串,要求将字符串的全部字符最少循环2次需要添加的字符数. [>>>kmp next函数 kmp的周期问题] #include &l ...
- ( KMP 求循环节的个数)Power Strings -- poj -- 2406
链接: http://poj.org/problem?id=2406 Power Strings Time Limit:3000MS Memory Limit:65536KB 64bi ...
- poj2406 Power Strings(kmp失配函数)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 39291 Accepted: 16315 Descr ...
- 【POJ2406】 Power Strings (KMP)
Power Strings Description Given two strings a and b we define a*b to be their concatenation. For exa ...
- poj2406 Power Strings 【KMP】
Given two strings a and b we define a*b to be their concatenation. For example, if a = "abc&quo ...
- POJ2406 Power Strings 【KMP 或 后缀数组】
电源串 时间限制: 3000MS 内存限制: 65536K 提交总数: 53037 接受: 22108 描述 给定两个字符串a和b,我们定义a * b是它们的连接.例如,如果a =" ...
- KMP与循环节相关题目
HDU 3746 Cyclic Nacklace ( KMP求最小循环节 ) len - nextval[len]即为最小循环节长度. #include <cstdio> #include ...
随机推荐
- RCC—使用 HSE/HSI 配置时钟 ---时钟树
本章参考资料:< STM32F4xx 中文参考手册> RCC 章节.学习本章时,配合< STM32F4xx 中文参考手册> RCC 章节一起阅读,效果会更佳,特别是涉及到寄存器 ...
- dfs带状态改变的做法
所谓带状态改变是指:在搜索到某个位置的时候,状态发生改变,继续计算步数. 给一个例题: 蒜头君要回家,但是他家的钥匙在他的朋友花椰妹手里,他要先从花椰妹手里取得钥匙才能回到家.花椰妹告诉他:“你家的钥 ...
- PHP——数组2(数组函数,二维数组,正则表达式)
<body> <?php //数组函数 $arr=array(1,2,3,4,5,6); print_r($arr); echo "<br />"; ...
- 大数据处理-Bloom Filter
大数据处理--Bloom Filter 布隆过滤器(Bloom Filter)是由巴顿.布隆于一九七零年提出的.它实际上是一个很长的二进制向量和一系列随机映射函数. 如果想判断一个元素是不是在一个集合 ...
- JS 数组以及对象的深拷贝总结
javascript 数组以及对象的深拷贝(复制数组或复制对象)的方法 前言 在js中,数组和对象的复制如果使用=号来进行复制,那只是浅拷贝.如下图演示: 如上,arr的修改,会影响arr2的值,这 ...
- List接口的实现类与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多
List接口的实现类(Vector)(与ArrayList相似,区别是Vector是重量级的组件,使用使消耗的资源比较多.) 结论:在考虑并发的情况下用Vector(保证线程的安全). 在不考虑并发的 ...
- Yii2中Html的使用
<ul class="dropdown-menu" role="menu" aria-labelledby="dropdownMenu4&quo ...
- python 获取网页编码格式
f = urllib2.urlopen(url,timeout=10)data = f.read() # decode the htmlcontentType = f.headers.get(' ...
- C++引用具体解释
引用是C++中新出现的.有别于C语言的语法元素之中的一个. 关于引用的说明,网络上也有不少.可是总感觉云遮雾绕,让人印象不深刻. 今天我就来深入解释一下引用.并就一些常见的观点进行说明,最后附带代码演 ...
- ios开发之 -- 强制横屏
在写项目的时候,会遇到很多稀奇古怪的需求,我就碰到一个写一个网站,需要强制横屏,然后不需要上架,网上看了很多大神的需求,基本都能实现,但是不太好用, 自己参考搞了一个,代码如下: AppDelegat ...