立足NOIP谈对于NOIP搜索的看法

近来在洛谷上做了一些NOIP往届的搜索题,也研究了一下NOIP的数据,发现并不简单。除了每年一次的游戏题外,其他题目往往还算简单。
那么历届NOIP卡AK的方法除了树上题目与图论的巧用(暂时还没有外),就只有搜索是最大的利器了。多种需要考虑的状态,抛弃了DP灵巧的状态设计,注重贪心与模型转化类的剪枝(NOIP的剪枝往往缺失套路性,一题一类剪枝)。所以后期比赛想要在NOIP上拔得头筹必须稳住搜索。我们最先会的相对高级的算法就是搜索。

反观历年NOIP的搜索越来越难,什么最优性剪枝、搜索预处理……方法层出不穷。而应对的OIer也有许多令人诧异的发挥,例如充虫食算的高斯消元解法、愤怒的小鸟的FWT解法、华容道的A*写法、靶形数独的DLX……这些都是在利用高级算法解决爆搜就能解决的问题。所以NOIP的特点也就暴露无遗,可以用高级算法做,但不保证不卡时。在时间紧迫的情况下,有些同学会依仗自己学过的高级算法(数据结构学傻)无脑解,也有些同学好好分析完题目后巧妙地用基础算法解出。

不仅仅是搜索可以说CCF创建NOIP的目的就在此。

面对以上情况有两种解决方法:
1.学会较多的算法及其优化,就例如最短路的三种写法,及其不同的优化,应用的数据特点……只要你算法水平有实打实的省选能力,那么NOIP的题目都可以秒,即使不是正解会被卡20左右的数据,也不会影响你的分数达到500+。
实现方式:等同于BZOJ随机做题数量260+(除开水题)

2.培养强大的模型转化能力,在NOIP的考场上,绝大多数题目不会是代码量巨大的数据结构或图论题,即使是搜索题,养成良好习惯,代码行数也不会太多。依靠你强大的比赛经验,你可以快速把一道题类化成其他题目,灵活地运用题目性质快速且准确的解决题目。
实现方式:CF紫名(rating1900+)

上述两种方法各有优劣:
第一种没办法解决题目信息奇怪,自己无法理解(NOIP应该不会出现)或者不好套用算法的题目,第二种无法解决考点就是自己没有学过的知识的题目。
相比之下(我不会说什么都要会,这对于大多数NOIP级别的OIer太苛刻了),选择第二种是更好的。

本人基本走了第一种路,相对于弱省的NOIP级别OIer来说,我学会的算法很多(单是平衡树就会6种),但是对于我来说,我现在的门槛就在题目的模型转化上,往往做过的题目改一下描述与范围我就爆炸了。

言归正传,为什么叫对搜索的看法?

因为NOIP的题目除开送分题,以拿NOIP一等的条件就是搜索功底扎实。写搜索时放开心扉,不要去一个劲的在意复杂度,先以指数级别的算法学出来再考虑优化。对于这类的搜索题,正解不是(对于大多数NOIP级别OIer来说)一蹴而就的,往往需要经过许多的调试与优化。调试我就不说了(除非你会gdb最好别用调试,太花时间了,中间过程输出真的好,有助你培养一个更加严密的逻辑思维。),优化就各凭本事了,什么能加的都加上也不说了(这些都是作为老选手的经验),那么决胜的还是你是否能够写得出正解啊!!

繁琐的搜索(mayan都算弱的),考的就是耐心与细心,NOIP不是省选,不会看不起写暴力的人(至少从往届来看暴力分给得很足),那么有一个60%正确的正解与90%正确的70暴力放在我眼前时,我会毫不犹豫地选择后者,因为NOIP最后比的是分数,暴力分少但稳定,可以防爆啊(省选什么的NOIP占比又不是绝对的),约合一下,总而言之:

NOIP就是一场搜索的较量,从你选择了OI这条路开始的每时每刻都是一次dfs分叉的抉择,最后的关头其实胜负也差不多了,真正可改变的是一开始(上面的两条推荐之路若能撑过NOIP那么注定都会踏上),既然已经播种,只剩下收获了!

祝各位NOIP2017 AK大吉!!!!

(不知为何像再见OI————哭)。

这里写图片描述