POJ 2406 Power Strings next数组循环节应用、
题意:就给出个字符串做*的定义、a^0 = "" (the empty string) and a^(n+1) = a*(a^n). 题目要求n的最大值、
思路: 化简上面的等式之后就知道是求a的n次方,也就是说求所给字符串的最大循环次数,想一想、 如果可以求出所给字符串的最小循环节, 那么是不是就可以求出它的最大循环次数了、 这是肯定的、 因为循环节最小、 循环次数也就最大
#include<iostream>
#include<cstring>
#include<cmath>
#include<cstdio> // 数组要开大一点、
const int qq=+;
char node[qq];
int next[qq];
int len;
void getnext()
{
int i,j;
i=;j=-;
next[]=-;
while(i<len){
if(j==-||node[i]==node[j])
next[++i]=++j;
else
j=next[j];
}
}
int main()
{
while(~scanf("%s",node)&&node[]!='.'){
len=strlen(node);
getnext();
/*for(int i=0;i<=len;++i)
printf("%d ",next[i]);
printf("\n");*/
printf("%d\n",len%(len-next[len])==?len/(len-next[len]):);
// len-next[len]得到的是最小循环节
} // 这题只能用判断是否可以整除、
return ;
}
// 至于为什么不能用特判最后一个字符是否和循环节最后一个字符相等来判断
// 我也没想清楚、 而且len-next[len]得到的可能不是循环节的第一个字符
POJ 2406 Power Strings next数组循环节应用、的更多相关文章
- poj 2406 Power Strings 后缀数组解法
连续重复子串问题 poj 2406 Power Strings http://poj.org/problem?id=2406 问一个串能否写成a^n次方这种形式. 虽然这题用kmp做比较合适,但是我们 ...
- poj 2406 Power Strings (后缀数组 || KMP)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 28859 Accepted: 12045 D ...
- KMP POJ 2406 Power Strings
题目传送门 /* 题意:一个串有字串重复n次产生,求最大的n KMP:nex[]的性质应用,感觉对nex加深了理解 */ /************************************** ...
- poj 2406 Power Strings (kmp 中 next 数组的应用||后缀数组)
http://poj.org/problem?id=2406 Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submiss ...
- POJ 2406 Power Strings (KMP)
Power Strings Time Limit: 3000MSMemory Limit: 65536K Total Submissions: 29663Accepted: 12387 Descrip ...
- KMP + 求最小循环节 --- POJ 2406 Power Strings
Power Strings Problem's Link: http://poj.org/problem?id=2406 Mean: 给你一个字符串,让你求这个字符串最多能够被表示成最小循环节重复多少 ...
- poj 2406 Power Strings【字符串+最小循环节的个数】
Po ...
- poj 2406:Power Strings(KMP算法,next[]数组的理解)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 30069 Accepted: 12553 D ...
- POJ - 2406 Power Strings (后缀数组DC3版)
题意:求最小循环节循环的次数. 题解:这个题其实可以直接用kmp去求最小循环节,然后在用总长度除以循环节.但是因为在练后缀数组,所以写的后缀数组版本.用倍增法会超时!!所以改用DC3法.对后缀数组还不 ...
随机推荐
- androidstudio如何用github多人开发
一.首先我们利用github作为代码库,有两种方法可以创建代码库 一定要配置好git环境和创建好github账号 检测git环境配置 检测github账号是否能登录 成功就会 (1)在github中直 ...
- 利用Microsoft.VisualBasic中TextFieldParser解析器把CSV格式倒入数据库
阅读目录 利用ODBC去操作 利用TextFieldParser操作 写了个Demo,利用Microsoft.VisualBasic这个程序集中的TextFieldParser解析器解析CSV格式的文 ...
- java贪吃蛇小游戏详解
https://blog.csdn.net/u011622021/article/details/81162083
- [新手必看] 17个常见的Python运行时错误
对于刚入门的Pythoner在学习过程中运行代码是或多或少会遇到一些错误,刚开始可能看起来比较费劲.随着代码量的积累,熟能生巧当遇到一些运行时错误时能够很快的定位问题原题.下面整理了常见的17个错误, ...
- Ubuntu中NS2安装详细教程
前言: NS2是指 Network Simulator version 2,NS(Network Simulator) 是一种针对网络技术的源代码公开的.免费的软件模拟平台,研究人员使用它可以很容易的 ...
- qt获取本机ip
//获取本机IP QString getIP(QString localHost) { QString ipAddr; #if 0 QList<QHostAddress> AddressL ...
- 【JZOJ4761】【NOIP2016提高A组模拟9.7】鼎纹
题目描述 输入 输出 样例输入 2 3 4 4 2 1100 0110 1100 10 01 10 00 2 2 2 2 11 11 01 10 样例输出 YES NO 数据范围 解法 由于鼎纹中的第 ...
- 在IDEA中实战Git 合并&提交&切换&创建分支
工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 场景三:小 ...
- Android BroadcastReceiver 简介
Android BroadcastReceiver 简介 在 Android 中使用 Activity, Service, Broadcast, BroadcastReceiver 活动(A ...
- python == 符号