HDU3746 Cyclic Necklace

SpringBoot整合oceanbase,实现oracle无缝切换到oceanbase 随着去“IOE”化的潮流,近些年来,许多与国家相关的项目不约而同到地往”国产化“方向靠拢,不可避免地,一些项目可能需要进行数据库迁移。 阅读详情

本篇博客来自于: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;
}

 

efm32 入门.pdf 本PDF共计22页,介绍的是操作驱动API,下载与否自己斟酌。 立即下载

相关推荐

Java对接海康威视明眸门禁设备

海康威视合作生态致力打造一个能力开放体系、两个生态圈,Hikvision AI Cloud开放平台是能力开放体系的核心内容。它是海康威视基于多年在视频及物联网核心技术积累之上,融合AI、大数据、云计算等技术,为合作伙伴提供的一个二次开发及创新的平台。的SDK复制到linux的lib目录下(如果是docker发布,记得做好共享映射哦)大家有没有想过,windows版的SDK为什么要复制到项目根目录的lib文件夹下?所以发布到linux的时候,我们需要将。打开AcsMain文件。................

Good Luck 7875

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

告别臃肿VS!仅用Visual Studio 2022 Build Tools为Qt 5.12.12配置MSVC2017开发环境

本文详细介绍了如何仅使用Visual Studio 2022 Build Tools为Qt 5.12.12配置MSVC2017开发环境,避免安装臃肿的完整VS。通过精准选择组件、配置Qt Creator编译器和优化Kit设置,实现高效、精简的Windows平台Qt开发环境搭建,特别适合追求性能和资源优化的开发者。

weixin_30340617的博客 350

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

EPICS电机支持(asynMotor)

EPICS电机支持(asynMotor)

yuyuyuliang00的博客 915

ardupilot开发 --- MavLink 篇

ardupilot开发 --- MavLink 篇

记录老板的每次pua,分享领导每天的毒鸡汤... 4250

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

【推荐100个unity插件】基于节点的程序化无限地图生成器 —— MapMagic 2

MapMagic 2是一款基于节点的程序化地形生成工具,可快速创建无限地图。主要功能包括:通过图形化节点编辑器构建地形逻辑;支持四个核心模块(对象、样条线、生物群落和笔刷);提供完整的操作指南,包括创建资产、使用编辑器窗口、节点操作等。工具具有直观的UI界面,支持节点连接、参数调整、图层管理等功能,并能实时生成地形。适合游戏开发者快速构建高质量的可玩地形环境。

向宇的博客,专注php/web全栈 unity游戏开发,欢迎大家评论纠错 3121

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

IEC 60747-8 是由国际电工委员会(IEC)制定的标准,标题为《半导体器件 - 分立器件 - 第8部分:场效应晶体管》

IEC 60747-8 是由国际电工委员会(IEC)制定的标准,标题为《半导体器件 - 分立器件 - 第8部分:场效应晶体管》(Semiconductor devices - Discrete devices - Part 8: Field-effect transistors)。该标准详细规定了场效应晶体管(FETs)的测试方法,涵盖静态和动态特性测试,适用于多种类型的FET,包括结型场效应晶体管(JFETs)、绝缘栅场效应晶体管(MOSFETs,增强型和耗尽型)等。3. 标准其他部分(简要概述)

专注于前沿技术的探索与实践,热衷于从代码逻辑、架构设计到行业应用等多维度深挖技术本质。期待在技术之路上与你共同成长~ 571

别把 ABAP 时间戳当数字算:TIMESTAMP / TIMESTAMPL 的语义、正确用法与项目级避坑指南

ABAP时间戳使用指南与常见陷阱 摘要:ABAP中的时间戳(TIMESTAMP/TIMESTAMPL)本质是UTC时间的数字表示,而非累计秒数。正确用法包括:直接比较时间戳顺序、使用CONVERT TIME STAMP进行时区转换、通过CL_ABAP_TSTMP计算时间差。关键注意事项:绝对不要对时间戳本身进行数学运算,否则会导致非法时间值。实际项目中需特别注意SAP Gateway的ETag处理、跨时区系统集成和CDS视图中的时间戳使用场景,避免将本地时间误存为UTC时间戳或在云迁移时产生时区问题。(14

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 343

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

60、磁悬浮主动隔振系统的LQR控制研究

本研究针对磁悬浮主动隔振系统,提出了一种结合ANN建模、LQR控制与MPGA优化的综合控制方案。通过建立系统的动力学与状态空间模型,利用混合训练算法的ANN精确描述MSVI的非线性和滞后特性,并设计基于最小力传递率的LQR控制器。为优化LQR的Q和R矩阵,引入多群体遗传算法(MPGA),有效克服传统GA的早熟收敛问题,提升搜索效率与控制性能。仿真结果表明,在单频、扫频、随机及冲击激励下,该方法显著降低传递力幅值,隔振效果远优于被动系统。研究验证了所提方法的有效性,为磁悬浮隔振技术的实际应用奠定了基础,并展望

linux6sysadmin的博客 125

hdu 3746 Cyclic Nacklace(KMP)

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

不慌不忙、不急不躁 1600

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

[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

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

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

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

【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、付费专栏及课程。

余额充值