【3336 KMP之next的巧用】

VScode搭建Opencv(C++开发环境) VScode配置Opencv一、准备软件二 、下载软件1、MinGw下载2、 Cmake下载3、Opencv下载三、编译1、cmake-gui2、make3、install四、 VScode配置1、launch.json2、c_cpp_properties.json3、tasks.json五、测试 用了半天事件,看了各种的博客终于配置成功了,在这里记录并分享一下,让更多的人少走弯路。 本次环境是Win 10. 一、准备软件 我们本次用到的3个软件,(建议读者文件路径,文件版本 尽量都和我相同,这样不容易出错 阅读详情

本题要求所给字符串的前缀在整个字符串中出现的次数的累加和。KMP算法的运用。

容易联想到KMP算法中的next[]数组,当next[i]>0时可以理解为i前面的next[]个字符组成的字符串对应一个前缀。此外长度为n的字符串有n个前缀。

所以sum等于n加上所有next值大于0的元素的个数。

例如:abab

那么他的前缀有a , ab ,aba , abab。

对应的在原串中的个数为a有2个,ab有2个,aba有1个,abab有1个。

那么总数是6。

思路:对这个字符串求出Next数组,那么对于每个Next[i] = k ,那么我们就知道前缀0 -> k - 1处有一个匹配。那么累加即可。

那么只需根据Next数组匹配成功的个数进行累加即可。Next数组最后一个应为字符串的长度。

/**********************
* author:maple_小贾
* Pro:HDOJ 3336
* algorithm: KMP之next的巧用
* date:2013/11/08
***********************/

#include<cstdio>
#include<cstring>
int next[200000+5];
char s[200000+5];
int test,n;
void GetNext(char *s,int *next){
    int i=0,j=-1,m;
    next[0]=-1;
    m=strlen(s);
    while(i<m){
        if(j==-1 || s[i]==s[j]){
            i++;
            j++;
            next[i]=j;
        }
        else{
            j=next[j];
        }
    }
}
int main(){
        scanf("%d",&test);
        while(test--){
            scanf("%d",&n);
            scanf("%s",s);
            GetNext(s,next);
            int sum=n;
            for(int i=0;i<=n;i++)
                if(next[i]>0)
                    sum=(sum+1)%10007;
            printf("%d\n",sum);
        }
}






从查表法到实时计算:SimpleFOC库中正弦函数优化的技术演进 本文深入探讨了SimpleFOC库v2.0.1版本中正弦函数优化技术的演进,从传统查表法到实时计算的创新实践。通过定点数优化、对称性利用和分段线性插值等关键技术,实现了在嵌入式电机控制中的高效三角函数计算,显著提升性能和资源利用率。 阅读详情

相关推荐

Sentaurus TCAD 修改字体

如题

努力学习的IC小白 5763

HDU—— 3336 Count the string

题意:给定一个字符串,duiyugaiz

u014086857的专栏 520

Open3D 教程学习指南 (持续整理)

Open3D 是一个开源库,旨在为 3D 数据处理提供高效且易用的工具。它由 Intel 开发和维护,支持多种 3D 数据处理任务,如点云处理、3D 重建、几何处理和可视化等。

Chase Blog 5932

HDU(3336)

给出一段字符串s时,我们可以写出该字符串的所有非空前缀。 例如:s: "abab" 前缀是,a, ab, aba, abab 其中 a,ab出现俩次 所以所有非空前缀的总和为=1*2+1*2+1+1=6;

m0_52262443的博客 444

医学影像处理实战:如何用Python+SimpleITK搞定DICOM/NIfTI重采样(附完整代码)

本文详细介绍了如何使用Python和SimpleITK库实现医学影像(DICOM/NIfTI格式)的智能重采样技术。通过实战代码演示,帮助读者掌握医学图像处理中的关键步骤,包括环境搭建、数据准备、核心算法实现和质量验证,解决医学AI领域中的影像标准化难题。

linux的博客 981

苹果开发者账号( Apple Developer)登录出现:你的 Apple ID 暂时不符合使用此应用程序的条件(您的apple账户不符合资格)

Apple开发对于新手来说确实可能会遇到各种问题,在遇到 Apple Developer 账号登录问题时,除了检查账号的安全性设置和协议确认外,还需要考虑账号的具体配置问题,比如主邮箱的设置。

Winter_Sun灬的博客 4135

hdu3336 Count the string

Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 1147    Accepted Submission(s): 494 Problem Description It is well kno

夏天的风 1749

2026华为OD机试(C++)真题【E卷+A卷+B卷+C卷+D卷】目录+在线OJ

华为OD机试真题题库【E卷+A卷+B卷+C卷+D卷】目录,C++实现。

MISAYAONE的博客 20万+

hdu3336--KMP入门

根据kmp中的next数组的定义,用动态规划可以求得前缀出现的次数题目链接:hdu3336#include&lt;stdio.h&gt; #include&lt;string.h&gt; #include&lt;iostream&gt; using namespace std; int d[200005],n,nextt[200005]; char T[200005]; void getNext(...

onsterm的博客 539

【深度学习新浪潮】Nano Banana(Gemini 2.5 Flash Image)技术解析与开发者实操指南

重新定义了 AI 图像生成的产业标准。它不仅是“平民化的视觉工厂”,更是推动内容生产从“创意试错”转向“精准制造”的关键工具。未来,随着视频生成能力的加入(谷歌计划支持“文字指令 - 动态场景 - 多平台适配”全流程),Nano Banana 有望进一步颠覆影视、广告等领域的创作范式。:批量生成多场景图,模特姿态自然,服装褶皱和材质细节高度一致,节省 90% 拍摄成本。模型的非正式代号,是一款革命性的 AI 图像生成与编辑工具,主打。:生成细节丰富的厨师特写,光影自然,皮肤纹理和刀具反光逼真。

专注:太空算力、AI infra、异构调度、大模型成本工程 894

深入剖析RDMA Netlink:Linux内核中高效通信的基石

RDMA Netlink:Linux内核中高效通信控制的核心机制 RDMA技术通过绕过内核实现高速数据传输,但其管理控制仍需内核参与。drivers/infiniband/core/netlink.c文件作为RDMA子系统的心脏,构建了用户空间与内核间的高效通信桥梁。该模块采用模块化客户端架构,通过全局数组管理不同类型的RDMA功能,如设备管理、连接服务和链路层操作。从最初的全局锁到细粒度读写锁的演进,展现了Linux内核追求高性能的持续优化。同时,通过条件编译支持新旧内核版本和网络命名空间,体现了稳定性与

数字人生 239

HDU3336 Count the string (KMP,next数组)

因为初次学习KMP,所以这题开始有点不好理解,看了许多的题解觉得有点复杂,因为这里是只求数量,所以感觉可以进行简化。思路如下: 先求出next数组,增加的操作是在计算next数组的过程中监视每一个next[i]值是否为零,不为零则说明存在与前缀相同的字串,这时直接进行数量加1。当next数组计算完成,答案也就出来了。 我也不确定这个思路会不会露了什么数据,如果有的话欢迎大家批评指正,感谢。 //H...

qq_44724908的博客 205

Linux系统中u-boot启动流程分析(详解)

代码部分,具体如下;

嵌入式技术开发 1992

hdu3336解读KMP算法的next数组

贴代码不是目的,讲解算法才是关键!!。解题的思路是使用了 KMP 算法,然而把并不是完整的KMP算法。只用到了它的next数组的求法。然而这正是KMP算法本身的关键所在。这里关键在于讲解next数组的思想。 在漫天飞的网络资料中,next数组的表示方法大致有两种:

果冻虾仁 3226

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

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

假人有限元模型

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

HDU 3336 Count the string【KMP的next数组性质】

题目链接:HDU 3336 Count the string Problem Description It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s , we can write down all the non-empty prefixes of this string. For example: s: "abab". T

memcpy0的博客 442

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

hdu3336(KMP+DP)

题目链接:hdu3336 假设两串字符完全相等,next[j]=i,代表s[1...i]==sum[j-i+1....j],这一段其实就是前缀 i~j之间已经不可能有以j结尾的子串是前缀了,不然next【j】就不是 i 了 设dp【i】:以string[i]结尾的子串总共含前缀的数量 所以dp[j]=dp[i]+1,即以i结尾的子串中含前缀的数量加上前j个字符这一前缀 #includ

no pains,no gains 2929

kuangbin专题十六 KMP&&扩展KMP HDU3336 Count the string

kuangbin专题十六 KMP&amp;&amp;扩展KMP HDU3336 Count the string It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, ...

ACMerszl的博客 177

hdu 3336 KMP之杭电next灵魂

hdu 3336

Myblackat的博客 526

HDU3336Count the string(dp+kmp_next表性质)

题目链接:hdu3336 题目大意:给一串n长度的字符串str,问str所有前缀(包括本串)在str中的匹配次数。 解题思路:利用kmp爆搜得到一发TLE,参考kmp+dp 以及dp状态方程解释博客思路学会利用next数组的性质进行dp优化:next[i]表示不包含下标为i的字符(i下标之前的串)的最长前后缀相等长度,那么我们设dp[i]表示以第i个字符为结尾 (或者说长度为i)的前缀能够匹配到的...

小胡同的诗 346

HDUOJ3336Count the string (KMP)(next[ ]理解应用)(DP)

HDUOJ3336Problem DescriptionIt is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can write down all the non-empty prefixes of this st...

wuswi0412 290

KMP-Count the string-HDU - 3336

KMP-Count the string-HDU - 3336 题目: It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can write down all the non-empty prefixes of...

njuptACMcxk的博客 207

HDU 3336 KMP算法中对next数组的理解

http://acm.hdu.edu.cn/showproblem.php?pid=3336 Problem Description It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can w

ACM,再见! 2193

hud3336 kmp之对next数组的利用

链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336题意:给一串字符串,问这串字符串所有的前缀总共在这个字符串中出现了几次。 举个例子:字符串abab。a出现了2次,a出现了2次,aba1次,abab1次,总共6次。 准备工作 : 解这道题就要对kmp算法中的next[] 数组有着深刻的理解,如字符串str的next[i] = j。就代表 str中

你的目光看海的博客 435

HDU 3336(扩展KMP)

Problem Description It is well known that AekdyCoin is good at string problems as well as number theory problems. When given a string s, we can write down all the non-empty prefixes of this string....

邵光亮的博客 310

HDU 3336. Count the string (KMP-next数组)

题目: http://acm.hdu.edu.cn/showproblem.php?pid=3336 题意: 给定一个串s; 求各个前缀的出现次数之和。 分析: 用KMP求得next数组之后,将next数组中递增的一串数的最后一个加到答案中即可; 别忘了每个前缀自己也算出现了一次。 代码: #include <bits/stdc++.h> using namespace std; ty...

OI -> ACM -> AI 400

hdu 3336(KMP算法的应用)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3336 Count the string Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total Submission(s): 4844    Accepted Subm

T_T 742

HDU3336 KMP之next数组妙用

本题要求所给字符串的前缀在整个字符串中出现的次数的累加和。KMP算法的运用。 容易联想到KMP算法中的next[]数组,当next[i]>0时可以理解为i前面的next[]个字符组成的字符串对应一个前缀。此外长度为n的字符串有n个前缀。 所以res等于n加上所有next值大于0的元素的个数。 例如:abab 那么他的前缀有a , ab ,aba , abab。 对应的在原串中的个数为a有

crazy_石头的专栏 857
上一篇: 【1711 KMP】
下一篇: 【KMP】
paidream
博客等级 码龄14年 24粉丝 195原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

paidream

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值