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

国家集训队2008论文集浅谈信息学中状态的合.doc

国家集训队2008论文集浅谈信息学中状态的合.doc

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

浅谈信息学中状态的合理设计与应用 福建省福州第三中学 刘弈 目录 浅谈信息学中状态的合理设计与应用 1 摘要 3 关键字 3 正文 3 一、 引言 3 二、 状态设计与应用的相关应用及例题分析 4 1、合理分析状态 4 例一、 square root 4 问题描述: 4 问题分析: 5 初步优化: 5 深入分析: 6 小结: 6 2、合理改进状态 6 例二、 banal tickets 7 题目描述: 7 问题分析: 8 初步分析: 8 进一步分析: 10 小结: 11 3、合理设计状态 11 例三、 shoot your gun 11 问题描述: 11 题目分析: 12 进一步分析: 12 深入思考: 14 小结: 15 三、 总结 15 附录 16 浅谈信息学中状态的合理设计与应用 摘要 状态分析与设计是信息学中一个重要的部分,在动态规划、搜索、枚举等众多算法中均有很多应用。对状态本身的分析与研究也是十分重要的,而本文就针对这个方面进行了探讨研究。 本文通过三个例题阐述了对于状态的合理设计在解题中所发挥的重要作用。 关键字 状态、分析、优化、改进 正文 引言 在日常生活中,工作时间与工作数量、单位效率的关系可以用下面的这个 式子来表达: 工作时间=工作数量*单位效率……① (上式中的单位效率是指完成一个工作所需花费的时间) 在信息学中,程序的运行时间是由两个因素决定的:程序中所处理的状态总数和处理每个状态所花费的时间,因此程序运行的总时间可以用下面的式子来表示: 程序运行时间=状态总数*单位效率……② 众所周知,①式中的工作数量是无法减少的,因此大多数人选择了减少对每一个工作所花费的时间,即提高单位效率,从而减少工作总时间,达到优化的目的。从表面上看,式①与式②并没有什么本质区别,然而在信息学中,式②中的状态总数不完全等同于式①中的工作数量,因为不同的状态表示可能产生不同的状态量。合理的状态设计有时能有效地减少冗余,从而通过减少状态总数而达到优化的目的。此外,好的的状态表示还能够帮助编程人员理清思路,为我们的解题带来崭新的思维方式,降低了解题难度。而对单位效率进行优化有时则无法达到这样的效果。 状态分析与设计的相关应用 本文将重点介绍三道例题:《square root》、《banal tickets》、《shoot your gun》,从三个方面描述了如何根据问题的核心要求分析出问题的本质,并合理改进状态的设计与表示方法,由此带来解题新思路。 其中,例题一《Square Root》,通过合理地分析,减少状态总数,用朴素算法解决问题。例题二《Banal Tickets》,改进状态表示方法,通过对状态进行优化,取得良好的效果。例题三《Shoot Your Gun》,在常规状态表示法无法奏效时,重新设计了状态表示,极大的减少了状态总数。并由此得出了更为简洁的算法,成功的降低了编程复杂度及时间复杂度。 1、合理分析状态 人们在解决问题时,往往要先分析算法的复杂度是否能够满足题目的空间及时间的限制,之后才进行编程。如果在分析复杂度时出现错误,过高或过低地估计了算法的复杂度,都会直接影响问题的解决。复杂度估计过低,往往使得编程人员盲目下手,就算最后恍然大悟,发现算法不可行,也已经浪费了不少编程时间。如果不能及时找到有效的改进,往往就只能选择放弃该算法而另起炉灶。这样的错误在严格限定时间编程的信息学赛场上导致的后果是很严重的,甚至会直接影响选手的心理及比赛的结果;反之,如果复杂度估计过高,可能会使选手放弃本来可行的解法而另寻出路。由于这样一点分析上的失误而与正确的算法失之交臂,难道不是很可惜吗?下面的例子就是讲述如何通过分析状态总数做相应优化,消除其中的冗余,并正确判断与运用算法,减少程序运行总时间,提高效率,使问题得以解决。 square root 问题描述: 若整数x满足 x2 ≡ a (mod n),则称x 是以为模时的平方根,记为满足以上条件的x的集合。 题目包含个询问,每次询问给出和,其中为质数,且与互质,要求出所有在(0,n-1)区间内的。 问题分析: 这题是一道模平方根( Modular Square Roots )的问题,有专门的数学方法来解决此类问题,如有兴趣,可以参考相关资料。 但是,解决模平方根的问题需要学习和掌握较高深的数学知识,若想在竞赛时推导数学公式,需要花费不少的时间。假如在推公式时遇到了阻碍,我们就会考虑用其他替代方法来解决这样的问题。 首先考虑最普通的方法——枚举。枚举的基本思路是穷举x,计算,如果等于,那么就称这个。对于一个询问,枚举的复杂度为,则整体复杂度为,在极限数据时,总枚举量可高达30多亿,显然无法在要求的时限内出解。经过上述分析,枚举法似乎很难满足题目要求。但枚举法是否

文档评论(0)

haocen + 关注
实名认证
内容提供者

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

1亿VIP精品文档

相关文档