神牛们,noip一等究竟需要掌握哪些内容啊?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了神牛们,noip一等究竟需要掌握哪些内容啊?相关的知识,希望对你有一定的参考价值。
如题。
NOIP级别中,普及组和提高组的要求不同。但是这几类动规的题目掌握了,基本也就可以了:
1、背包问题:01背包、完全背包、需要构造的多维01背包
详见背包九讲
2、最大降序:例如打导弹
3、矩阵相乘:例如能量珠子
4、买股票
5、方格取数:单向的、双向的
6、三角取数
这些都是简单的动规的应用,必须掌握,背也要背出来,还要会套用。
至于排序,本人认为基本的选择排序大家都会,快速排序是一定要会的,当数据规模<500时用选择排序,当数据规模在500和100000之间是用快速排序,但是NOIP中经常考到基数排序,例如划分数线等,数据规模会达到1000000,用其他的排序法可能会超时一两个测试点。
至于搜索,那是必须掌握的深搜、广搜都要会,主要是深搜,当提高组碰到一下子想不出动规的状态转移方程式,深搜穷举也是可行的,一般都能拿到不少的分数。个人之间广搜的用处不大,程序复杂而且爆机率很高。当然n个for的穷举法在不得已的时候也能得不少分,只要if剪枝的好,对付八后问题等问题时,时间效率比很高。
另外就是图的遍历,有关图的最小生成树、图的单源最短路径,也是需要很好地掌握,一直会考。当然,深搜的本事高的人可以用深搜搞定。
总结如下:要得一等,必须对模拟法和穷举法有深刻的体会,并知道很多变通的手段;对快排要背的滚瓜烂熟;对深搜要做到不管是贪心还是动规的题,都能用深搜实现,只不过少量点超时而已;动规要记住六大模型,然后背包要理解透彻;数学很重要,数学分析的题要做对,例如排组合、凸包、计算几何近几年常考。有了这些,一等可以稳拿。 参考技术A 普及组: 基础语言,搜索,动态规划,图的遍历,数据结构的知识了解就可以,尤其是树,二叉树要会
提高组:基础语言,数论,搜索以及优化,动态规划以及优化,图论(最短路径尤为重要,遍历是基础,还要有二分图的概念)。树重要,队列和栈。
差不多了
关于Dijkstra、SPFA、Bellman-Ford、Floyed算法的问题
总觉得这几个算法的基本框架都差不多,都看重 v[i]>=v[j]+g[i,j] 这个不等式,SPFA是队列优化的Bellman-Ford,但我觉得SPFA如果不用邻接表用起来好像也就跟Dijkstra差不多......
痛苦啊,迷茫啊......神牛快来丫......总觉得这几个差不多......如果是NOIP提高组,需要掌握的有什么?
spfa是bellman-ford的队列优化,时间发咋度o(ke),其中k为所有顶点进队的平均次数,可以证明k一般小于等于2。
dijkstra不可以有负权,但效率比bellman-ford快,o(2n次方),用二叉堆优化o((m+n)log n),斐波纳契堆能稍微提高一些性能,让算法运行时间达到o(m + n log n)。
floyed算每对顶点之间的最短路,前几个是单源的
noip提高组多练搜索,学会动态规划差不多了,其他的模拟提都简单,主要是多练题
纯手打 参考技术A 最近我对Dijkstra、SPFA、Bellman-Ford进行了大规模测试(10000个点)
当边数<10000*100 SPFA具有平均优势
当边数超过上述数, SPFA将逊于Dijkstra
关于Bellman-Ford算法的快速实施,除了SPFA,国际上最有竞争力的是划分算法(Partitioning algorithm), 加入门槛技巧,是最快的最短路算法. 远比SPFA有竞争力,而且划分算法是强多项式算法.
我的测试表明, 划分算法不加入门槛技术,仅仅稍微略逊于SPFA. 门槛技术不过操作起来不太方便. 不要再迷信SPFA了, 它的迭代次数一般为2,经我的测试是不靠谱的,和划分算法的迭代次数相差不大(按照SPFA的迭代次数衡量), 是大家对Bellman-Ford算法的实施了解得不够.
我的邮件为hwy000111@163.com.有关最短路的可以与我交流.
以上是关于神牛们,noip一等究竟需要掌握哪些内容啊?的主要内容,如果未能解决你的问题,请参考以下文章
关于Dijkstra、SPFA、Bellman-Ford、Floyed算法的问题