D: 字符串最大表示

时间限制: 1 s      内存限制: 128 MB

题目描述

有如下定义,abcnabcn表示字符串abc重复n次,例如abc2abc2表示abcabc。

给定一个字符串,求可以被表示的最大n,例如:aaaa最大个数是4,重复子串为a;abababab最大个数是4,重复子串是ab;ababababc最大个数是1, 重复子串是ababababc。

输入

第一行输入n,表示字符串的个数。(n <= 100)

接下来n行,每行一个字符串。(字符串长度<=100000)

输出

输出可以表示给定字符串的最大子串个数

样例输入

3
aaaa
abababab
abc

样例输出

4
4
1

提示

输入数据量大,推荐使用scanf

来源

jxust__ACM

题意:求出循环段重复次数

分析:求出next数组,最后一个next值就是整个字符串的最长公共前后缀,长度减去该值就是循环段的长度长度除以循环段就是循环段个数;

#include<iostream>
#include<string.h>
#include<algorithm>
using namespace std;
char s[100011];
int nex[100011];
void get_next()
{
int i=0,j=-1,len=strlen(s);
nex[0]=-1;
while(i<len)
{
if(j==-1||s[i]==s[j])
nex[++i]=++j;
else
j=nex[j];
}
}
int main()
{
int n,len;
scanf("%d",&n);
while(n--)
{
memset(nex,0,sizeof(nex));
scanf("%s",s);
get_next();
len=strlen(s);
printf("%d\n",len/(len-nex[len]));
}
}

Just Oj 2017C语言程序设计竞赛高级组D: 字符串最大表示(next数组)的更多相关文章

  1. Just Oj 2017C语言程序设计竞赛高级组E: DATE ALIVE(二分匹配)

    E: DATE ALIVE 时间限制: 1 s      内存限制: 128 MB 提交 我的状态 题目描述 五河士道家里的精灵越来越多了,而每一个精灵都想和他有一个约会.然而五河士道却只有一个,无奈 ...

  2. Just Oj 2017C语言程序设计竞赛高级组A: 求近似值(矩阵快速幂)

    A: 求近似值 时间限制: 1 s      内存限制: 128 MB 提交 我的状态 题目描述 求⌊(5–√+6–√)2n⌋⌊(5+6)2n⌋%9932017. 例如:n=1,(5–√+6–√)2( ...

  3. 2014江西理工大学C语言程序设计竞赛高级组题解

    1001 Beautiful Palindrome Number 枚举回文数字前半部分,然后判断该数字是否满足,复杂度为O(sqrt(n))! 1002 Recovery Sequence  本题的核 ...

  4. 2017年江西理工大学C语言程序设计竞赛(高级组)

    问题 A: 求近似值 #include <stdio.h> #include <time.h> #include <stdlib.h> using namespac ...

  5. 2018年江西理工大学C语言程序设计竞赛(高级组) 三角平方数

    题目描述 三角数:形如图a,圆点摆放成等边三角形的数字,则为三角数. (图a) 平方数:形如图b,小方块摆放成正方形的数字,则为平方数. (图b) 那么如果一个数字既是三角形数又是平方数,则称为三角平 ...

  6. 2018年江西理工大学C语言程序设计竞赛高级组部分题解

    B Interesting paths 考察范围:组合数学 此题是机器人走方格的变种,n*m的网格,从(1,1)走到(n,m),首先可以明确,水平要走m-1格,竖直要走n-1格,则走到目的地的任意一条 ...

  7. 2018年江西理工大学C语言程序设计竞赛(初级组)一

     C语言竞赛初级组第一.二场答案:https://www.cnblogs.com/xingkongyihao/p/10046918.html  A: 逆序对 时间限制: 1 s      内存限制:  ...

  8. 2014江西理工大学C语言程序竞赛高级组

    Beautiful Palindrome Number 题意:求N里面有多少个符合要求的数字(数字要求:回文数,且前一半部分是不严格递增) 解法:打表 #include<bits/stdc++. ...

  9. 2017年江西理工大学C语言程序设计竞赛(初级组)

    问题 A: Petr的盒子(初) #include <iostream> #include <stdio.h> #include <algorithm> using ...

随机推荐

  1. centos U盘挂载问题

    查看u盘路径 fdisk -l Disk /dev/sda: 16.2 GB, 16236150784 bytes, 31711232 sectors Units = sectors of 1 * 5 ...

  2. google 变量命名规则简要记录

    1.文件命名规则 好的文件名命名可以很清晰的看出这个文件将要承载的内容,Google给出的规则为:文件名要全部小写, 可以包含下划线 (_) 或连字符 (-). 按项目约定来, 例如:cmd_save ...

  3. 使用多线程提高Rest服务性能

    ⒈使用Runnable异步处理Rest服务 /** *使用Runnable异步处理Rest服务 * @return */ @GetMapping("/order") public ...

  4. ipconfig命令查ip的时候给别人看有危险吗

    知识源:Unit 4: Networking 1 4.1 Networking 1 The Routing of a Packet  网址:https://www.baidu.com/link?url ...

  5. 二、Java神经网络框架Neuroph的使用和架构分析

    一.使用Neuroph Studio构造感知机处理逻辑与 新建项目 接着,输入名字和地址,点击“完成” 在工程的神经网络文件下新建神经网络 准备训练数据 开始训练 误差展示 也可以测试神经元 或者输入 ...

  6. 设计模式C++学习笔记之五(Factory Method工厂方法模式)

      工厂方法模式的意义是定义一个创建产品对象的工厂接口,将实际创建工作推迟到子类当中.核心工厂类不再负责产品的创建,这样核心类成为一个抽象工厂角色,仅负责具体工厂子类必须实现的接口,这样进一步抽象化的 ...

  7. 使用C++编写linux多线程程序

    前言 在这个多核时代,如何充分利用每个 CPU 内核是一个绕不开的话题,从需要为成千上万的用户同时提供服务的服务端应用程序,到需要同时打开十几个页面,每个页面都有几十上百个链接的 web 浏览器应用程 ...

  8. 数据库join union 区别

    join 是两张表做交连后里面条件相同的部分记录产生一个记录集,union是产生的两个记录集(字段要一样的)并在一起,成为一个新的记录集. 1.JOIN和UNION区别  join 是两张表做交连后里 ...

  9. JS导出excel设置下载的标题/与angular结合冲突

    2017.8更新 此功能与angular结合使用时,最后一行 document.getElementById("dlink").click(); 与angular的ng-click ...

  10. $Django RESTful规范

    一 什么是RESTful REST与技术无关,代表的是一种软件架构风格,REST是Representational State Transfer的简称,中文翻译为“表征状态转移” REST从资源的角度 ...