算法合集之《一类算的法复合的方法》.pdfVIP

算法合集之《一类算的法复合的方法》.pdf

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

一类算法复合的方法 江苏省扬州中学 张煜承 摘要 本文讲了一类算法复合的方法。这种方法是指将一个问题的若干种算法,分 别使用于这个问题中若干个互补的部分。 本文对两个有意思的问题作了详细的分析,使用了这种算法复合的方法成功 ( ) ( ) 解决了这两个问题。问题一中我们将一个O 和一个O 的算法复合,分别 ( . ) 使用于问题中的两部分询问,得到了一个O 的算法。问题二中,我们将两 ( ) ( . ) 个O 的算法使用于原问题分割得到的三部分,得到了一个O 的算法。 本文最后对这类方法进行了总结。每个算法都可能有各自的优势和劣势。而 将它们复合,使用于问题中的不同的部分,就有可能会将它们的优势结合起来, 取长补短,得出一个总体 优的算法。这种思想是极为重要的。 关键字 算法复合 方法 一、问题 1 1.1 问题描述 维护一个集合S ,初始时为空。对这个集合有两种操作: 1、B X 在集合S 中插入一个整数X ,保证当前集合中X 还不存在 2、A Y 询问集合S 中,被 Y 除余数最小的数是多少。如果有多个数余数相 1 题目来源:The 2006 ACM Asia Programming Contest - Shanghai 1 页,共11 页 等,取任意一个 有N 个操作需要依次处理。计算所有询问的答案。允许离线算法。 其中1 ≤ ≤ 40000,1 ≤ , ≤ 500000 1.2 初步分析 这道题让我们设计算法维护一个集合 。我们先考虑一些容易想到的算法。 最容易想到的算法是直接模拟问题中规定的操作,我们称其为算法 1.0 。每 当遇到一个询问操作“A ”时,我们枚举当前集合 中的每个数,从中找出被 除 余数最小的。算法的时间复杂度为O 插入操作个数×询问操作个数 ,最坏情况 下显然会超时。但当插入操作很少或询问操作很少时,这个算法会很快。 ( ) 算法1.1 )。设 表示当前集合S 中 另一个略优一些的算法也很容易想到 ( 使得x mod y 最小的数x ,也就是询问 “A y ”的答案。因为允许离线算法,我们 可以事先整理出询问中所有不同的 Y 组成的集合 T,然后我们对每个 ∈ 维护 ( ) (| |) 的值。每当插入一个数的时候,我们用O 的时间逐个 新这些值。算法 | | | | ( ) 的时间复杂度为O 插入操作个数× 。 同样是O 级别的,所以也不能完 全解决问题。其实,这里的集合T 可以理解为我们想维护的询问。我们可以只维 护一部分询问中出现的Y,维护需要的时间就会减少,但是将会有一些询问得不 到回答。 1.3 抓住 题的特征得出另一个算法(算法1.2 ) 为了解决这个问题,我们抓住问题的特征,深入思考。 当遇到一个询问 “A Y”的时候,我们要在当前集合S 中寻找使得x mod Y 最 小的数 x 。我们把这里的 x 写成 + ,其中0 ≤ 。那么 mod = ( ) + mod = 。这就是说,我们要在集合S 中,寻找使得r

您可能关注的文档

文档评论(0)

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

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

1亿VIP精品文档

相关文档