浅析浅析乘数思想在情报学竞赛中的应用.docVIP

浅析浅析乘数思想在情报学竞赛中的应用.doc

  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文档。上传文档
查看更多
浅析浅析乘数思想在情报学竞赛中的应用

浅析倍增思想在信息学竞赛中的应用 安徽省芜湖市第一中学 朱晨光 目 录 TOC \h \z \t 标题 2,1,标题 3,2 TOC \h \z \t 标题 2,1,标题 3,2 HYPERLINK \l _To摘要 PAGEREF _To\h 2 HYPERLINK \l _To关键字 PAGEREF _To\h 2 HYPERLINK \l _To正文 PAGEREF _To\h 2 HYPERLINK \l _To引言 PAGEREF _To\h 2 HYPERLINK \l _To应用之一 在变化规则相同的情况下加速状态转移 PAGEREF _To\h 2 HYPERLINK \l _To应用之二 加速区间操作 PAGEREF _To\h 8 HYPERLINK \l _To一个有趣的探讨 PAGEREF _To\h 11 HYPERLINK \l _To总结 PAGEREF _To\h 12 HYPERLINK \l _To感谢 PAGEREF _To\h 12 HYPERLINK \l _To参考文献 PAGEREF _To\h 13 HYPERLINK \l _To附录 PAGEREF _To\h 13 摘要 倍增思想是解决信息学问题的一种独特而巧妙的思想。本文就倍增思想在信息学竞赛中两个方面的应用进行了分析。全文可以分为五个部分: 第一部分引言,简要阐述了倍增思想的重要作用以及运用方法; 第二部分介绍倍增思想的第一个应用——在变化规则相同的情况下加速状态转移; 第三部分介绍倍增思想的第二个应用——加速对区间进行的操作; 第四部分探讨了一个有趣的问题,即为什么倍增思想每次只将考虑范围扩大一倍而不是两倍、三倍等; 第五部分总结全文,再次指出倍增思想的重要性以及应该怎样灵活运用倍增思想。 关键字 倍增思想 变化规则 状态转移 区间操作 正文 引言 倍增思想是一种十分巧妙的思想,在当今的信息学竞赛中应用得十分广泛。尽管倍增思想可以应用在许多不同的场合,但总的来说,它的本质是:每次根据已经得到的信息,将考虑的范围扩大一倍,从而加速操作。大家所熟悉的归并排序实际上就是倍增思想的一个经典应用。 在解决信息学问题方面,倍增思想主要有这两个方面的应用—— 在变化规则相同的情况下加速状态转移; 加速区间操作。 下文将就这两个方面进行详细的讨论。 倍增思想应用之一 在变化规则相同的情况下加速状态转移 这里是指由一种状态变化到另一种状态,并不只限于动态规划中的“状态转移”。 这里是指由一种状态变化到另一种状态,并不只限于动态规划中的“状态转移”。 首先,让我们来看一个简单的例子——已知实数a,计算a17。 分析: 很显然,一种最简单的方法就是令b=a,然后重复16次进行操作b=b*a.这样,为了得到a17,共进行了16次乘法。 现在考虑另外一种方法,令a0=a,a1=a2,a2=a4,a3=a8,a4=a16,可以看出,ai=ai-12,(1=i=4)。于是,得到a0,a1,a2,a3,a4共需要4次乘法。而a17= a*a16=a0*a4, 也就是说,再进行一次乘法就可以得到a17.这样,总共进行5次乘法就算出了a17. 如果将这种方法推而广之,就可以解决这样一个一般性的例题: 已知,计算: 分析: 将n表示成为二进制形式并提取出其中的非零位,即n=2b1+2b2+……+2bw,不妨设b1b2……bw. 由于已知,所以也就知道了,重复bw次将这个数平方并记录下来,就可以得到(bw+1)个数:,,,……,; 根据幂运算的法则,可以推出==**……*,而这些数都已经被求出,所以最多再进行(bw+1)次操作就可以得到。 由于n的二进制表示最多有个非零位,所以bw最大为。也就是说,最多进行O()次乘法就可以算出,这比进行O(n)次乘法效率高得多。 当然,由于得到n的二进制表示的过程本身就是按照从低位到高位的顺序,所以并不需要记录,,,……,,只需要每次即算即用就可以了。伪代码如下(见下页): 那么,这个算法是如何减少乘法次数的呢?显然,==**……*使得求转化为求不超过个a的幂的积。而序列,,,……,中除了第一个数以外,每一个

文档评论(0)

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

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

版权声明书
用户编号:8000054077000003

1亿VIP精品文档

相关文档