网站大量收购独家精品文档,联系QQ:2885784924

2.3知识精炼(一)高清版本.pdf

  1. 1、本文档共7页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多

知识精炼(一)

主讲人:邓哲也

POJ2774LongLongMessage

给出两个字符串S和T,求它们的最长公共子串。

|S|,|T|≤105

POJ2774LongLongMessage

2

原始的DP做法,时间复杂度O(n)

我们可以二分答案len。

然后计算S和T中所有长度为len的子串的哈希值。

这一步是O(n)的。

然后比较S的哈希值集合中和T的哈希值集合中有没有相

同的元素。

可以再通过一步哈希找相同的值。这样总共仍然是O(n)。

总的时间复杂度就是O(nlogn).

Codeforces580EKefaandWatch

给出一个数字串,现在有两种操作:

1lrd:将[l,r]中的所有数字都改为d

2lrd:询问[l,r]这个子串的周期是否为d。

1=n=105

Codeforces580EKefaandWatch

首先思考对于一个字符串S,如何判断它的周期是不是d?

比如串ababab的周期是2

串abcabc的周期是3

串abcde的周期是5

假设S的长度为n。

只要判断S[1..n-d+1]和S[d+1..n]是否相等即可。

Codeforces580EKefaandWatch

用线段树来维护哈希值。

对于一个区间[l,r]维护的是s[l]kr-l+s[l+1]kr-l-1

+…+s[r]

那么合并两个区间的时候:

h[x]=h[ls]kr-mid+h[rs]即可。

对于覆盖标记(节点为x,代表区间为[l,r]):

r-lr-l-10

h[x]=d*(k+k+…+k)

这样每次的操作都是O(logn)的。

下节课再见

文档评论(0)

133****9720 + 关注
实名认证
内容提供者

物业管理师证持证人

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

领域认证该用户于2023年04月23日上传了物业管理师证

1亿VIP精品文档

相关文档