之前高一参加比赛前,曾写过总结,主要是提醒自己NOIP所需要的基本算法,以及至少所需要掌握的数据结构。
当然,NOIP,最重要的算法,只有一个,THAT IS “搜索大法”
练好了搜索,今后的所有竞赛,题目哪怕拿不了满分,至少30+,说不定60+。自己脑补一下优化,100分就到手啦。。。
第一篇正儿八经的博客(别管前面那篇):请各位OIER们,一定一定,要练习搜索,必须练习搜索,而且搜索MUST成为你最拿手的算法!!!
今天的主题是算法概论,就是大概提及一下各个算法啦,貌似也有些没提及(那就拜托无所不能的度娘啦,不过有些具体的算法,我会在后面具体提到的)。
AND 这是高一写的稿子,有啥表述不清的,甚至错误的,请各位体谅!
一.基础思想
1.1二分答案
noip考试中经常会出现二分答案题目,二分答案,其实是一种思想而并非一种准确的算法,多与模拟,贪心,图论算法相结合。比如说noip2015day2第一题跳石头,noip疫情控制,noip借教室等好多题都可以考虑这种思想。尤其是题目中出现了最大值最小或是最小值最大一般都是二分答案。所以,考试时必须时刻提醒自己要注意往二分答案这方面想。那么二分答案为什么难呢,其一是压根就没往这方面想,其二就是很难check()。check()才是二分答案的关键,容易的直接贪心模拟,比如去年的跳石头,但疫情控制则是二分答案+倍增+贪心的组合题。
那么对于如何书写好check,那就只能靠个人能力了。不过,我们思考时一定要抓住当前分出的答案mid,想好如何会使所求解不满足于当前答案,当发现所求解>mid时该怎么办。从这几个方向去思考会比较容易的得出答案。
1.2贪心
贪心可以是最不靠谱的解法,也可以是最靠谱的解法。一切都要看你如何去贪,再你码完搜索不会写时,贪心可以帮你。不过除非你百分之百确定贪心的正确性,最好不要只交个贪心上去。贪心其实与最难的dp有很多相像之处,但最大的区别就是有无后效性。这类题目在noip中出现也很多,容易题有不少,但是很多难题多多少少有些思想在其中。这一部分只能考试前多刷题,提高思考能力,考试时自己好好想。
1.3分治
分治也是思想,有太多的数据结构,算法要用到分治了。二分答案虽然被我拿出去那是因为太重要了,但二分答案说到根本还是分治思想。分治可以对于多个对象分,答案可以分,操作可以分,最常见的还是算法分治。也就是用分治算法解题,比如:解方程,求平面各种点对等等题目。
1.4倍增
倍增也是几乎年年多考的题目,倍增,就是字面上的意思,成倍的增长,成倍的跳跃。可以在树上倍增比如说求解lca,在图上同样也可以倍增。倍