信息学竞赛中的字符串算法的应用-杭二李建.pptxVIP

信息学竞赛中的字符串算法的应用-杭二李建.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  4. 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  5. 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  6. 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  7. 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

信息学竞赛中

字符串算法;零、字符串哈希;自然溢出;双哈希;一、最小表示法;问题引入;明确几个记号和概念;枚举算法;构造新的算法;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;“最小表示法”在本题的应用;二、Manacher求最长回文子串;以字符例;P[i]计算;P[i]计算;当P[j]=mx-i的时候,以S[j]为中心的回文子串不一定完全包含于以S[id]为中心的回文子串中,但是基于对称性可知,下图中两个绿框所包围的部分是相同的,也就是说以S[i]为中心的回文子串,其向右至少会扩张到mx的位置,也就是说P[i]=mx-i。至于mx之后的部分是否对称,就只能老老实实去匹配了。

对于mx=i的情况,无法对P[i]做更多的假设,只能P[i]=1,然后再去匹配了。;//输入,并处理得到字符串s

intp[1000],mx=0,id=0;

memset(p,0,sizeof(p));

for(i=1;s[i]!=\0;i++){

p[i]=mxi?min(p[2*id-i],mx-i):1;

while(s[i+p[i]]==s[i-p[i]])p[i]++;

if(i+p[i]mx){

mx=i+p[i];

id=i;

}

}

//找出p[i]中最大的

;三、KMP;A=abababaababacb

B=ababacb;j=0;

for(inti=1;i=n;i++)

{

while(j0b[j+1]!=a[i])j=p[j];

if(b[j+1]==a[i])j++;

if(j==m)

{

//发现一个匹配,进行相应处理

j=p[j];//寻找下一个匹配

}

};P数组;P[1]=0;

j=0;

for(inti=2;i=m;i+)

{

while(j0b[j+1]!=b[i])j=p[j];

if(b[j+1]==b[i])j++;

p[i]=j;

};四、扩展KMP;容易发现,如果有某个位置i满足extend[i]=m,那么T就肯定在S中出现过,并且进一步知道出现首位置是i——而这正是经典的KMP问题。

因此可见“扩展的KMP问题”是对经典KMP问题的一个扩充和加难。

;S=’aaaaaaaaaabaaa’

T=’aaaaaaaaaaa’;S=’aaaaaaaaaabaaa’

T=’aaaaaaaaaaa???;S=’aaaaaaaaaabaaa’

T=’aaaaaaaaaaa’;下面提出一般的算法。

设extend[1..k]已经算好,并且在以前的匹配过程中到达的最远位置是p。最远位置严格的说就是i+extend[i]-1的最大值,其中i=1,2,3,…,k;不妨设这个取最大值的i是a。(下图黄色表示已经求出来了extend的位置)

;上述算法是线性算法。原因如下:

容易看出,在计算的过程中,凡是访问过的点,都不需要重新访问了。一旦比较,都是比较以前从不曾探访过的点开始。因此总的时间复杂度是O(n+m),是线性的。

;如何求解next[]数组;五、Trie(字母树);Trie的性质;Trie的存储;Trie的插入与查找;多串匹配;多串匹配;失败指针(前缀指针);失败指针;构造自动机;六、后缀数组;后缀数组的构造;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组的构造-倍增算法;后缀数组构造方法总结;后缀数组;后缀数组-LCP;后缀数组-LCP;后缀数组-LCP;后缀数组-Height的计算;后缀数组-Height的计算;后缀数组-Height的计算;后缀数组-Height的计算;后缀数组

文档评论(0)

金华 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档