HDU 3746 Cyclic Nacklace ( kmp求最小循环节 )

WSL2下用QEMU模拟ARM开发板:从编译uboot到调试全流程(附常见错误解决) 本文详细介绍了在WSL2环境下使用QEMU模拟ARM开发板的完整流程,包括uboot编译、内核调试等关键步骤。通过QEMU模拟vexpress-a9开发板,开发者可以高效搭建嵌入式开发环境,解决常见错误并提升开发效率。 阅读详情
题目链接:点击进入
题目

在这里插入图片描述
在这里插入图片描述

题意

就是给你一个字符串,问最少从后面添加几个字符能使其变成全是由循环节循环组成的。( 这个循环至少循环两次 )

思路

定理:假设 S 的长度为 len ,则 S 存在最小循环节,循环节的长度 L 为 len – next [ len ]
(1)如果 len 可以被 len - next [ len ] 整除,则表明字符串 S 可以完全由循环节循环组成,循环周期 T = len / L 。
(2)如果不能,说明还需要再添加几个字母才能补全。需要补的个数是循环个数 L – len % L
注意:特判 L = len 的情况

代码
// Problem: Cyclic Nacklace
// Contest: Virtual Judge - HDU
// URL: https://vjudge.net/problem/HDU-3746
// Memory Limit: 32 MB
// Time Limit: 1000 ms
// 
// Powered by CP Editor (https://cpeditor.org)

//#pragma GCC optimize(3)//O3
//#pragma GCC optimize(2)//O2
#include<iostream>
#include<string>
#include<map>
#include<set>
//#include<unordered_map>
#include<queue>
#include<cstdio>
#include<vector>
#include<cstring>
#include<stack>
#include<algorithm>
#include<iomanip>
#include<cmath>
#include<fstream>
#define X first
#define Y second
#define best 131 
#define INF 0x3f3f3f3f3f3f3f3f
#define pii pair<int,int>
#define lowbit(x) x & -x
#define inf 0x3f3f3f3f
//#define int long long
//#define double long double
//#define rep(i,x,y) for(register int i = x; i <= y;++i)
using namespace std;
typedef long long ll;
typedef unsigned long long ull;
const double pai=acos(-1.0);
const int maxn=1e6+10;
const int mod=1e9+7;
const double eps=1e-9;
const int N=5e3+10;
/*--------------------------------------------*/
inline int read()
{
    int k = 0, f = 1 ;
    char c = getchar() ;
    while(!isdigit(c)){if(c == '-') f = -1 ;c = getchar() ;}
    while(isdigit(c)) k = (k << 1) + (k << 3) + c - 48 ,c = getchar() ;
    return k * f ;
}
/*--------------------------------------------*/

int t,Next[maxn];
string s;

void getnext(string s,int len)
{
	int k=-1,j=0;
	Next[0]=-1;
	while(j<len)
	{
		if(k==-1||s[j]==s[k])
		{
			k++;
			j++;
			Next[j]=k;
		}
		else k=Next[k];
	}
} 

int main() 
{
//	ios::sync_with_stdio(false);
//	cin.tie(0);cout.tie(0);
	cin>>t;
	while(t--)
	{
		cin>>s;
		int len=s.size();
		getnext(s,len);
		int l=len-Next[len];
		if(l==len)
			cout<<len<<endl;
		else if(len%l==0) 
			cout<<0<<endl;
		else
			cout<<(l-len%l)<<endl;
	}
    return 0;
} 
【2023】Java利用modbus4j实现工业设备Modbus TCP数据采集与解析 本文详细介绍了在2023年使用Java和modbus4j库实现工业设备Modbus TCP数据采集与解析的完整实践。内容涵盖开发环境搭建、TCP连接建立、开关量与模拟量数据的读取与解析、批量读取性能优化、控制指令写入以及常见错误排查指南,为开发者构建稳定高效的工业物联网数据采集系统提供全面指导。 阅读详情

相关推荐

Multisim14.0仿真实战:从零搭建RS/JK触发器电路(附真值表+波形图)

本文通过Multisim 14.0软件,提供了从零搭建RS触发器和JK触发器电路的详细仿真实战教程。内容涵盖核心概念解析、电路搭建步骤、动态波形观测及真值表分析,重点探讨了RS触发器的非法状态问题以及JK触发器的四种工作模式,帮助读者直观理解时序逻辑电路的“记忆”功能与设计要点。

weixin_29175469的博客 273

HDU - 3746 (kmp+最小循环节)

题目链接 http://acm.hdu.edu.cn/showproblem.php?pid=3746 题意 给你一个字符串,问你要使得这个字符串的最小循环节出现次数大于等于2,需要在前面或者后面添加多少字符。 思路 先用kmp求出最小循环节的长度,如果不能整除字符串长度,则余数就是需要添加的字符,如果能够整除,特判一下最小循环节出现次数为1的情况就好。 代码 #include&...

a670531899的博客 271

STM32F103C8T6+HX711实战:从零打造智能体重秤(附OLED显示与语音播报)

本文详细介绍了基于STM32F103C8T6微控制器和HX711称重模块,从零构建智能体重秤的完整实战教程。内容涵盖硬件选型、系统架构、驱动编写、数据滤波校准算法,并实现了OLED显示与语音播报功能。该项目是嵌入式学习的综合性实践,尤其适合作为毕业设计课题,帮助开发者掌握传感器应用、数据处理及人机交互等核心技能。

weixin_28285943的博客 517

hdu3746(next数组解决)

题目大意:给一个字符串,问你向尾部或首部最少加几个可以使这个字符串由n个相同的小字符串组成,且n > 1。题目的要点:1、首尾皆可以加字符;                     2、 要求最短重复子串;                     3、 重复次数必须大于1;然后就是怎么解决了。我的解决方法是next数组,举个例子吧: 字符串: a    b    c    a    b

polmJ 478

ABAP传输自定义IDOC实例

首先确定出站方和入站方,本例中我使用150作为发送方将200作为接收方。 发送端系统配置 进入tcode-SALE,点击定义逻辑系统,这里我定义D01CLNT150为发送端, D01CLNT200为接收端 2,将逻辑系统分配给对应的client 3,进入tcode-WE31,创建IDOC开发段(segment)这里可以按照实际需求创建想要传输的结构,为求简单我创建了ZKNA1并选取了几个客户主数据的字段作为示例 4,进入tcode-WE30,创建Idoc Ty...

Nathan的博客 4077

手机相机基础技术解析:从硬件到算法的全面指南

手机相机的成像过程可简化为的链路,其核心硬件包括 镜头、CMOS传感器、ISP(图像信号处理器) 以及配套的软件算法。

weixin_44239603的博客 2448

hdu3746 --kmp的运用

//题目意思是:求最少需要在结尾后面补几个字符才能凑成两个循环 这里主要讲的是hdu3746,没有讲解kmp 有关kmp的博客推荐去看这个博客:(讲得十分漂亮,令人心花怒放:)不过篇幅比较长,需要静下心来慢慢品味u) https://blog.youkuaiyun.com/v_july_v/article/details/7041827 对于这题,先看一下图: 我们再考虑另一种情况: |———...

nowting的博客 252

使用Python爬虫抓取旅游景点评价数据并进行热度可视化

景点热度通常由景点的评分、评论数以及游客的热情度来决定。高热度的景点通常意味着更高的游客评分和更多的游客评论。热度不仅反映了景点的受欢迎程度,还可以揭示某些景点的潜力和存在的问题。评分:游客对景点的综合评分,通常是0到5分。评论数:景点的评论数量,反映了游客对景点的关注程度。热度变化:在一定时间内,景点的评价和评论数量变化,能够反映景点的热度波动。通过使用Python爬虫技术抓取旅游景点的评价和评论数据,我们能够深入分析景点的热度,并通过数据可视化工具将这些信息展示给用户。

2201_76125261的博客 1282

hdu 3746 (求串的最小正周期)

hdu 3746 (求串的最小正周期)

程序员的冷浪漫 858

【20260309】【亲测可用】【异常】Get https://registry-1.docker.io/v2/: net/http: request canceled

【异常】Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection。

奶爸的编程之路,也就一周冷个三天 2万+

基于MATLAB的数字滤波器之低通滤波器

本文首先介绍了数字低通滤波器的概念和原理,其次论述了低通滤波器的技术指标和设计步骤,最后给出了数字低通滤波器应用于信号去噪的MATLAB代码。

总结论文中的算法并给出论文的复现代码 3万+

HDU 3746 Cyclic Nacklace (KMP补齐最小循环节)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 解题思路: 结论:最小循环节长度为len-fail[len] len表示字符串长度,字符串的下标0~len-1,fail[len]表示0~len-1的最长相同前后缀 ①对于2*fail[len]<=len的情况显然成立,且要补足的为len-fail[n] ②如果大于2*fail[...

shadiao.的博客 293

C++怎么学?零基础也可以,一份完整学习路线图助你搞定!

提供一条清晰、系统且实践导向的C++学习路径。从基础语法、面向对象、泛型编程、异常处理,逐步深入STL、智能指针、并发编程等现代C++高级特性。无论是新手还是希望提升,通过系统学习与项目实践,助您将理论知识转化为实际解决问题的能力。

Lion_Long的博客 4022

HDU-3746 Cyclic Nacklace(kmp求最小循环节)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 比如abcabca 从1开始计数,计数到tlen: nxt[i]表示以 i 结尾的最长公共前后缀的长度,不包括自身比如字符串a的nxt[0]为0,aa的nxt[1]为1。 nxt[i]同时表示前缀的最后一个位置(从1开始计数) nxt[tlen]表示整个字符串的最长公共前后缀长度 len=tle...

FreeGo~ 206

蓝牙模块HM-10手册

蓝牙模块HM-10手册,该手册对蓝牙模块HM-10进行了详细的介绍和使用方法以及一些AT指令。

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

[KMP求最小循环节][HDU3746][Cyclic Nacklace]

题意给你个字符串,问在字符串末尾还要添加几个字符,使得字符串循环2次以上。解法无论这个串是不是循环串 i-next[i] 都能求出它的最小循环节代码:/* 思路:kmp+字符串的最小循环节问题分析: 1 题目要求的是给定一个字符串,问我们还需要添加几个字符可以构成一个由n个循环节组成的字符串。 2 可知我们应该先求出字符串的最小循环节的长度:假设字符串的长度为len,那么最小的循环节就是cir =

学习之路 740

最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版

Part-E1-SDIO-Specification-Ver4.00-Final-120220.pdf:最新的sdio 4.0 spec 协议标准 带书签 高清完整PDF版,包括SDIO 接口的外设,SDIO 接口官方协议等。

HDU 3746 Cyclic Nacklace(KMP求最小循环节)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3746 Cyclic Nacklace题意思路代码 题意         给你一个字符串,要求添加最少的字符使原字符串变成周期至少为2的循环字符串。 思路         计算出字符串对应的next数组,长度为len的字符串的最小循环节为len - nex

Chstelove的博客 334

数学建模模型总结

这是本人在两年内准备参加数学建模竞赛搜集到的模型资料,已经经过了本人的筛选和整理,希望能够对准备参加数学建模竞赛的学弟学妹们提供一些帮助!

HDU 3746|Cyclic Nacklace|KMP求最小循环节

题目大意给定字符串,问最少在末尾加多少个字符就可以让字符串存在循环节(循环节出现次数>1)。题解分析KMP的next数组,next[n]指最长的那个字符串是该字符串的前缀和后缀(但不是整个字符串)。情况1:那么如果类似ABCDABKKABCDAB这种情况,next[n]就指ABCDAB的长度=6。那么我们再补2个KK就可以了,最小循环节ABCDABKK=8,是(原长14)-6=8。 ABCDABK

とある黄鱼のOIブログ 567

【HDU 3746】Cyclic Nacklace KMP求最小循环节

                                      Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 14654    Accepted Submission(s): 6096   ...

Xylon的博客 409

HDU - 3746 Cyclic Nacklace 【KMP模板 求字符串循环节个数【最大/最小循环节的个数

求最循环节的个数: #include "iostream" #include "algorithm" #include "cstring" #include "cstdio" #include "iomanip" using namespace std; string a; int nextt[100005]; void getnext(){ int i=0,j=-1; n...

cheung99857的博客 3813

hdu 3746 Cyclic Nacklace (KMP求最小循环节)

//len-next[len]为最小循环节的长度 # include # include # include using namespace std; int len; char a[100010]; int next[100010]; void Getnext() { int i=0,j=-1; next[0]=-1; while(i<=len) {

苍竹林 857

HDU 3746 Cyclic Nacklace KMP求字符串最小循环节长度

题意:一个字符串,必须要有的重复串组成(至少重复两次),现在问在串的最后面至少填多少字母才能满足要求。 思路:先求出循环节的长度。利用KMP的nex数组求出循环节长度。 举个栗子: abcdeabcdeab 长度L=12,nex[12]=7,x=L-nex[L]=5就是一个循环节的长度,用5-L%5就是答案了。 如果nex[L]=0,答案就是L。

Accepted 865

hdu 3746 Cyclic Nacklace (kmp求最小循环节)

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 5422    Accepted Submission(s): 2448 Problem Description CC always beco

clover_hxy的博客 339

HDU 3746 (KMP求最小循环节) Cyclic Nacklace

题意: 给出一个字符串,要求在后面添加最少的字符是的新串是循环的,且至少有两个循环节。输出最少需要添加字符的个数。 分析: 假设所给字符串为p[0...l-1],其长度为l 有这样一个结论: 这个串的最小循环节为 l - next[l] 感觉自己想得不是特别透彻,所以把别人的博客贴上来吧。 里面有个小错误就是:next[i]的值应该为j-k 对于这种情况还可以这样想: |←...

weixin_30610755的博客 99

一套Python序列处理函数:从FASTA解析到蛋白质翻译

在生物信息学分析中,DNA与RNA序列的解析和操作是科研与开发中最基础也最频繁的需求。无论是从FASTA文件提取基因记录,还是统计碱基组成、计算GC含量,再到转录、翻译与反向互补,都需要稳定且可复用的代码支撑。Python凭借丰富的生态和极低的上手门槛,成为实现这类序列处理工具的优选语言。通过标准库封装一套分层清晰的函数集,既能保证输入输出符合行业约定,又能灵活支持单条与多条序列场景,在批量基因分析、引物设计和流程集成中都能显著提升效率。整套方案以轻量、零依赖为目标,基于Python 3实现了完整的序列处理

weixin_30235225的博客 290

模板题 + KMP + 求最小循环节 --- HDU 3746 Cyclic Nacklace

Cyclic Nacklace  Problem's Link:  http://acm.hdu.edu.cn/showproblem.php?pid=3746   Mean:  给你一个字符串,让你在后面加尽量少的字符,使得这个字符串成为一个重复串。 例: abca---添加bc,成为abcabc abcd---添加abcd,成为abc

北岛知寒 339
上一篇: CodeForces - 138C - Mushroom Gnomes - 2 - ( 线段树 + 离散化 )
下一篇: HDU - 2087 剪花布条( kmp )
Cosmic_Tree
博客等级 码龄7年 134粉丝 337原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值