HDU3746 Cyclic Necklace

自然语言处理:稀疏向量表示 稀疏向量表示是指运用特定的方法和技术,将数据(如文本、图像、信号等)转化为向量形式,且该向量具有大部分元素值为零,仅少数元素值非零的特征,以此来实现对数据的高效存储、处理和分析。 阅读详情

本篇博客来自于:https://blog.youkuaiyun.com/niushuai666/article/details/6965517

首先改了一下题目名称,貌似necklace拼写错误。。。

好了说正经的。题意:T组数据,每组数据给出一个字符串,询问至少要再加多少个字符使其变成一个有循环循环至少一次的字符串。

传送:http://acm.hdu.edu.cn/showproblem.php?pid=3746

还是一个kmp,模式串自己匹配自己。对于next数组的理解很重要:Next[i],s[0,...,i]的后缀与s[0...m-1]的前缀的最大匹配长度。

看了上面大佬的博客,感觉太强啦,自己找了几个串找了找规律。

可以发现一个规律,从第二个循环节的最后一个字符开始,所有的Next值都是连续的,并且到最后一个最后一个字符的Next的值,与从第二个循环节从1开始计数的结果是一样的,那么我们就可以得到这样一个计算字符串中的方式,使用Next数组!

假设图中S段是该串的最小循环节,S‘是末尾没有循环完的一小段,Next[m]是将最后一个字符进行匹配的位置,那么若S’不是第一个循环节,那么我们可以知道Next[m]会指向它前面那段S的相同位置。

从这个图我们可以得出循环节为   strlen(s)-Next[strlen(s)],需要添加的为   循环节-Next[strlen(s)]%循环节。

需要注意的是,当前循环整好结束,也就是不需要添加就已经是一个循环了的,满足之前讨论的最后一个字符的next值是有规律的,也就是Next[m]%循环节=0(循环次数大于等于2,如果是第一次循环的,那么我们可以通过判断循环节==strlen(s)来确定)

#include<bits/stdc++.h>
using namespace std;
const int M = 1e5+5;
char t[M];
int Next[M];
int m;

void kmp_pre()
{
    memset(Next,0,sizeof(Next));
    int i,j;
    Next[0]=j=-1;
    i=0;
    while(i<m)
    {
        while(j!=-1 && t[i]!=t[j])
            j=Next[j];
        Next[++i]=++j;
    }
}

int main()
{
    int T;
    scanf("%d",&T);
    while(T--)
    {
        scanf("%s",t);
        m=strlen(t);
        kmp_pre();
        int lh=m - Next[m];
        if(lh!=m && m%lh==0)
        {
            puts("0");
            continue;
        }
        printf("%d\n",lh-(Next[m])%lh);
    }

    return 0;
}

 

扩增子分析|基于零模型的群落确定性和随机性构建过程——R实战 周集中教授团队多年在群落确定性和随机性过程深耕,于2017年总结出来下述图表中的计算路径,广受生态领域研究者的推崇。本文基于该计算路径,梳理了整理了邓晔老师组的代码,通过一个实例演示了计算过程和结果。 阅读详情

相关推荐

J-Flash手动添加华大HC32F460型号全攻略

在嵌入式开发中,Flash编程算法是连接调试工具与微控制器的重要桥梁,它定义了芯片存储器的擦除、编程和校验等底层操作规范。其原理是通过调试接口将算法代码加载到目标芯片的RAM中执行,从而实现对Flash存储器的访问与控制。这项技术的核心价值在于打破了工具链对芯片型号的固有支持限制,使得开发者能够灵活适配各种新兴或定制化的微控制器。在工程实践中,当面对J-Link等主流调试器官方支持包更新滞后时,手动添加芯片型号成为保障开发效率的关键技能。本文以华大半导体的HC32F460系列MCU为例,详细解析了如何通过配

weixin_29192365的博客 349

HDU 3746 Cyclic Nacklace 环形项链(KMP,循环节)

题意:   给一个字符串,问:要补多少个字符才能让其出现循环?出现循环是指循环节与字符串长度不相等。比如abc要补多个变成abcabc。若已经循环,输出0。 思路:   根据最小循环节的公式,当len%(len-next[len])==0时,最小循环节为len/(len-next[len]),而当len%(len-next[len])!=0时,就没有循环节。可以通过在串尾补...

weixin_30753873的博客 169

从桨叶设计到电机匹配:手把手教你调出无人机最佳动力组合

本文系统介绍了无人机动力系统的核心匹配原则,重点解析了如何通过测试与数据分析,优化螺旋桨与电机的组合,从而显著提升系统力效与续航。文章提供了从参数解读、实战测试到深度调优的完整指南,帮助开发者解决电机过热、推力不足等常见问题,实现无人机性能最大化。

weixin_29305313的博客 235

hdu3746 Cyclic Nacklace

Cyclic Nacklace Time Limit : 2000/1000ms (Java/Other)   Memory Limit : 32768/32768K (Java/Other) Total Submission(s) : 1   Accepted Submission(s) : 1 Font: Times New Roman | Verdana | Georgia Font

夏天的风 2408

OpenPose 论文理解

OpenPose: Real-time multi-person keypoint detection library for body, face, hands, and foot estimation paper: Realtime Multi-Person 2D Pose Estimation using Part Affinity Fields link: OpenPose paper...

JustForYou的博客 2万+

使用 MATLAB/Simulink 构建一个基于PID控制的直流电机速度调节系统模型

直流电机(DC Motor)因其结构简单、成本低廉、易于控制等特点,广泛应用于各种工业自动化和家用电器中。PID控制器作为最常用的控制策略之一,在直流电机的速度调节系统中具有重要应用价值。通过合理调整比例(P)、积分(I)、微分(D)三个参数,可以实现对电机速度的精确控制。本教程将带你使用构建一个基于PID控制的直流电机速度调节系统模型,涵盖电机模型构建、PID控制器设计、系统仿真与调试等多个方面。本文介绍了如何使用构建一个基于PID控制的直流电机速度调节系统模型。

amy_mhd的博客 217

Cyclic Nacklace(kmp算法)

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 799Accepted Submission(s): 343 Problem Description CC...

weixin_34346099的博客 525

点云处理实操(四) -PCL中的点云三角化

点云处理实操(四) -PCL中的点云三角化

cangqiongxiaoye的博客 939

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

HDU 3746 Cyclic Nacklace(KMP:循环节) http://acm.hdu.edu.cn/showproblem.php?pid=3746 题意:给你一个串,要你在串头或尾添加最少的字符,使得该串至少有2个循环节,问你最少需要加几个字符. 分析:        首先要明白:如果一个串需要至少添加x(x>=0)个字符才能是有2个循环节的串,那么我可以只在串末尾添加,不需

code 4232

《多模态融合改进》目录一览 | 专栏介绍 :全网 第一份 完整的多模态改进教程,提供《多模态模型改进完整项目包》-开箱即用

在大家订阅专栏后,便可获得多模态模型改进完整项目包-开箱即用,方便简单

Limiiiing的博客 1万+

UG\NX二次开发 获取对象的层、颜色、隐藏状态、线宽、线型、高亮显示状态

获取对象的层、颜色、隐藏状态、线宽、线型、高亮显示状态。

王牌飞行员_里海的博客 1981

Cyclic Nacklace HDU - 3746

#include<iostream> #include<cstdio> #include<cstring> #include<cmath> #include<cstdlib> using namespace std; const int N = 1e6+5; int nxt[N]; int cnt = 0; char s1[N],...

❂ 226

9、工业数据管理:Historian、ERP、MES与资产模型解析

本文深入解析了工业数据管理中的核心概念与技术,包括Historian数据库、ERP和MES系统以及资产模型。文章详细介绍了Historian数据库的特性、架构分类、数据采集方式及时间序列处理能力,同时探讨了ERP和MES系统的功能与优势,特别是MES在生产执行中的重要作用。资产模型部分结合ISA-95和ISA-88标准,阐述了工业资产的层次化建模方法。此外,文章还分析了各系统之间的协同关系、面临的挑战及应对策略,并展望了未来工业数据管理的发展趋势,如云原生技术、人工智能融合和工业物联网的应用。

pz89012345的博客 144

hdu 3746 Cyclic Nacklace(KMP)

题目链接:hdu 3746 Cyclic Nacklace 题目大意:问说最少需要在添加几个值,可以是字符串变成以一个子字符串循环得到的(至少有两个该子串) 解题思路:KMP的变形吧,将字符串的next数组求出来,next[n]是关键;k = n - next[n],如果k = 0的话,说明没有一个匹配的字符,那么至少就要添加n个;n%k = 0的话,说明该字符串已经满足了要求

不慌不忙、不急不躁 1600

霍尼韦尔SoftMaster使用说明

霍尼韦尔SoftMaster使用说明

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

[kuangbin带你飞]专题十六 KMP & 扩展KMP & Manacher D - Cyclic Nacklace HDU - 3746(循环节kmp)...

D - Cyclic Nacklace HDU - 3746 题目链接:https://vjudge.net/contest/70325#problem/D 题目: CC always becomes very depressed at the end of this month, he has checked his credit card yesterday, without...

weixin_30633949的博客 139

LinePhone3.2.7(android端最新版本) sip客户端

SIP客户端For android:LinePhone3.2.7(最新版本),官网地址:http://www.linphone.org/

HDU 3746 Cyclic Nacklace (最小循环节、循环周期)

HDU 3746 Cyclic Nacklace -012 传送门:http://acm.hdu.edu.cn/showproblem.php?pid=3746 Problem Description CC always becomes very depressed at the end of this month, he has checked his credit card yesterday...

GG_Bond的博客 270

迈瑞BS系列全自动生化分析仪LIS协议接口手册(内含HL7和ASTM)

迈瑞BS系列全自动生化分析仪LIS协议接口手册,内含HL7和ASTM)

【kmp循环节】hdu 3746 Cyclic Nacklace

hdu 3746 Cyclic Nacklacehttp://acm.hdu.edu.cn/showproblem.php?pid=3746问题描述:字符串增加多少字符实现整个串存在循环节思路kmp()中next[]表的理解,前缀与后缀自相匹配的最大长度len - next[len]是最小的循环节,abcabcabc中为9-6=3;如果len%(len-next[len])==0,则本身存在循环节,

Hacker_vision 445

Cyclic Nacklace HDU - 3746(KMP中对next数组的理解)

CC always becomes very depressed at the end of this month, he has checked his credit card yesterday, without any surprise, there are only 99.9 yuan left. he is too distressed and thinking about how to...

Ray.C.L的博客 635

Hdu 3746 循环节 Cyclic Nacklace

原题是英文,咱们按咱们的翻译来哈 有一个字符序列,现在问你: 序列后面最少补充几个元素使其恰能成为几个重复循环的序列。 Input 第一行是一个整数 T ( 0 &lt; T &lt;= 100 ) 代表测试数据的组数. 之后T行每行一个字符串. 由小写字母'a'-'z'组成. 字符串的长度为: ( 3 &lt;= Len &lt;= 100000 ). Output 对于每组测试数据,输出一...

菜鸡的水题之路 276

数据结构——kmp中next数组理解

HDU 3746 Cyclic Nacklace (kmp求循环节) Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 22075 Accepted Submission(s): 8987 Problem Description CC...

张洪基 378

HDU 3746 Cyclic Nacklace 最小循环节

一、内容 CC always becomes very depressed at the end of this month, he has checked his credit card yesterday, without any surprise, there are only 99.9 yuan left. he is too distressed and thinking about ...

Tizzi的博客 999

KMP(最小循环节)

HDU-3746 Cyclic Nacklace Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 6925    Accepted Submission(s): 3016 Problem

huatian5的博客 1314

hdu3746Cyclic Nacklace

题目大意: 给你一串字符(a~b),问你

追梦的Anker 660

HDU3746 Cyclic Nacklace 【KMP】

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

长风的专栏 902

HDU 3746 Cyclic Nacklace

Cyclic Nacklace Time Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 17908Accepted Submission(s): 7328 Problem Description CC always become...

~ 352
上一篇: POJ3167
下一篇: HDU1358 Period
「已注销」
博客等级 码龄9年 6粉丝 32原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值