poj2406 Power Strings(kmp)
poj2406 Power Strings(kmp)
给出一个字符串,问这个字符串是一个字符串重复几次。要求最大化重复次数。
若当前字符串为S,用kmp匹配'\0'+S和S即可。
#include <cstdio>
#include <cstring>
using namespace std;
const int maxn=2e6+5;
char s1[maxn], s2[maxn];
int n1, n2, nxt[maxn], ans;
int main(){
while (~scanf("%s", s1)){
if (s1[0]=='.') break;
memcpy(s2, s1, sizeof(s1));
n1=n2=strlen(s1);
for (int i=n1; i<n1*2; ++i) s1[i]=s1[i-n1];
n1*=2;
int j=nxt[0]=-1; //j:i-1的border位置
for (int i=1; i<n2; ++i){
for (; ~j&&s2[j+1]!=s2[i]; j=nxt[j]); ++j;
if (!j&&s2[0]!=s2[i]) j=-1;
nxt[i]=j;
} j=-1; //j:s2中已经匹配完成的位置
for (int i=1; i<n1; ++i){
for (; ~j&&s2[j+1]!=s1[i]; j=nxt[j]); ++j;
if (j==n2-1){ ans=i-n2+1; break; }
if (!j&&s2[0]!=s1[i]) j=-1;
}
printf("%d\n", n2/ans);
}
return 0;
}
poj2406 Power Strings(kmp)的更多相关文章
- 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 ...
- POJ 2406 Power Strings(KMP)
Description Given two strings a and b we define a*b to be their concatenation. For example, if a = & ...
- Power Strings(KMP)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 45008 Accepted: 18794 D ...
- poj 2406:Power Strings(KMP算法,next[]数组的理解)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 30069 Accepted: 12553 D ...
- poj 2406 Power Strings(KMP入门,next函数理解)
Power Strings Time Limit: 3000MS Memory Limit: 65536K Total Submissions: 37685 Accepted: 15590 D ...
- 「UVA10298」 Power Strings(KMP
题目描述 PDF 输入输出格式 输入格式: 输出格式: 输入输出样例 输入样例#1: 复制 abcd aaaa ababab . 输出样例#1: 复制 1 4 3 题解 Luogu的题解 这里是对目前 ...
- 【POJ2406】Power Strings(KMP,后缀数组)
题意: n<=1000000,cas较大 思路:这是一道论文题 后缀数组已弃疗,强行需要DC3构造,懒得(不会)写 ..]of longint; n,m,i,j,len,ans,st:longi ...
- poj 2406 Power Strings(kmp求一个串的重复子串)
题意:重复子串次数 思路:kmp #include<iostream> #include<stdio.h> #include<string.h> using nam ...
随机推荐
- Java-API:java.util百科
ylbtech-Java-API:java.util百科 包含集合框架.遗留的 collection 类.事件模型.日期和时间设施.国际化和各种实用工具类(字符串标记生成器.随机数生成器和位数组.日期 ...
- Vue开发模板简介
1. 传统发开模式的问题 用传统模式引用vue.js以及其他的js文件的开发方式,会产生一些问题. 基于页面的开发模式:传统的引用vue.js以及其他的js文件的开发方式,限定了我们的开发模式是 ...
- 2011-03-17免Oracle客户端连远程Oracle的方法
1.http://www.oracle.com/technetwork/topics/winsoft-085727.html上下载对应版本的instanctclinet zip包 34M 解压后92M ...
- 10-10C#基础---数据类型之间的转换
10-10 C#基础数据类型转换(熟练掌握) 第一课 数据类型之间的转换 基本类型的转换:自动转换(隐式转换)和强制转换(显示转换) 装箱转换:允许值类型隐式转换成引用类型. 拆箱转换:允许将引用类 ...
- spring-初始化bean
@EnableScheduling@Servicepublic class BaseTask implements InitializingBean, ApplicationContextAware{ ...
- SpringBoot表单验证
需求:年龄在18岁以下的女生不能注册 处理器中的写法: 实体类中的写法:
- maven手动安装oracle驱动到仓库
1. 2.打开http://maven.jahia.org/maven2/一步步打开找到 我需要的版本 https://devtools.jahia.com/nexus/content/groups/ ...
- C run-time函数总览
Argument Access(参数访问):变长参数列表.这个模块提供了三个宏:va_arg.va_end和va_start,用来实现变长参数列表的访问. Buffer Manipulation(内存 ...
- php5.6,curl上传的变化
$ch = curl_init ();curl_setopt ( $ch, CURLOPT_SAFE_UPLOAD, false); //php5.6要加上这个 $fields = array(); ...
- 关于handler的再次讨论
主要有两个问题,post方法和sendmessage方法有什么不同? 同一个handler对象发送的message只能发送给自己吗? 问题1: post方法,对于Handler的Post方式来说,它会 ...