以前没考过正规的考试,因此决策还是有所失误的。
首先我非常的激动(不在本校考),坐在电脑前面就平静不下来,导致我第一题看了好久才看到“先进先出”。刚开始我想到了一种很直接的方法,结果写完了才发现是20分的算法,此时我就想:先去做后面的题,这个回头再改。其实我应该再想想,毕竟才过一个小时(读题算半小时),并且第一题也没做多久。(这是第一次失误)
我以为第一题不好做,后面应该会有签到题,结果误把第二题看成签到题(最后一分没拿!)。一周前才做了一道类似的区间DP,是没有星号的那种(但是用区间DP顺利做出来了),因此我还是考虑区间DP,长得还是比较像。唯一比较烦的是星号的判定,调试才发现dp写得有点小问题。(事后才发现这道题是三维的dp,我当时只写了两维)大概有很长一段时间都是在调dp,后来实在写不出,就打了暴力,结果打完暴力样例都过不了,这才明白有一点我有一个地方判断失误(实际上有一种不算的条件被我算进去了,后面大家讨论时也说到了,只是考试时我只明白有情况我算重,但并未细看),由于两个半小时过去,我才做了20分,心里很焦急。
(这是第二个失误)再看第三题,好像是能做的(其实我当时应该想想,第三题还是有机会拿高分的),但是时间不太够,我还剩第一题的一个比较优的算法和第四题一整道,所以直接第三题打了暴力。(后来我思考了一下,把剩下一个半小时全部留给一三题,应该也是一种比较优的选择。但是我觉得当时做第四题也不是决策失误)打暴力时我发现有一个小优化(对应编号的对应与否),结果又调这个优化调了好久。事实证明,加不加优化都是40分,后面的点就不是能靠搜索过的。但我觉得加优化还是没错的,只是调bug的能力还要增强。接着就是最后一道题了,前两个点显然暴力染色是能过的,结果写了一会还是写挂了,可能是时间不够,心态不稳,过了小样例就赶紧走了(大样例都不是能用暴搜过的,之后果然一分没有)。
最后我“顺利”回到了第一题,重新读了题,发现根本跟拦截导弹关系不大,所以转而用链表重构。大约还有6,7分钟时,我勉强过了三个样例,然后自己出了个5000的大样例,也是很快就过了,测了一个拉满的数据,发现用了大约三秒,以为能够骗到分。结果还是骗了40分,相当于当时写了个最不优的效率为m^2的算法,全是m^2过的。后来重构了一下代码,就是把链表和二分结合起来,显然就是一个基本的平衡树(当时我不会平衡树,也不会set)。平衡树能把m优化成logm,所以考完了我就认真学了一下平衡树(其实只要会用set,但是也能拿高分)。
考完以后,感觉自己完全就打了个暴力,有一种根本没有机会打正解的感觉。想一想平时考试也是3、4个小时,我还能稳下来先看题,然后想办法打暴力,想随机化骗分,偶尔还能想出点高分算法。但是考这次csp感觉有点力不从心。题难是肯定的,二四题的暴力都很不好打。最后相当于是一三题的200分骗了80分的暴力,较总分400来说,考得确实不怎么样。说实话,考试时想出“正确思路”的题准确来说只有第一道(还写挂了),其他的我只能尝试骗分。一个大问题是我平时练的搜索太少了,启发式搜索估价函数已经N久没有摸过了(感觉我一道板题都没过~)。考试前都是在练线段树、树状数组等数据结构的板,没想到用都没用到。第四题的那个能骗分的二分图我显然是学过的,只是完全没注意到只有两个边缘点的数据提示,同时时间也不支持了。
时间,时间!感觉整场比赛下来,就完全没有停歇下来。绵阳那边电脑位置又窄,电脑系统又不会用(反正和光华的有点区别,虽然我还识字),最关键的是有隔板挡着,就感觉很慌。考前我是有一个预估分数的,毕竟前两次的考试我虽然不是很高,但也绝没有这一次的那么吃力,结果考下来没有达到预估的分。这次大家都说,csp-s2021没有签到题了,保龄的会很多,等等。但最后看下来,难度是我没想到的,比较难,但是保龄却很少。毕竟第一题只要看到“先进先出”就成功了一半,而第三题被称为“一半签到题”。
如果不会正解,做不出二四,那么是只能拿一三的暴力分80分吗?强哥告诉我们,这两道题每道题“应该”要拿六七十,但是能用n^2过的点就是40分,我该怎么拿更多的分?显然,如果完全没摸到正解的边,或者对这些题没有深度的思考,只是按照题目的意思打n^2暴力,就只能拿40分(就是我)。我的一个同学同样是打的N^2暴力,但是他A了第一题,还有同学第三题不知道是不是n^2还是O(n)的算法,最后也成功A了第三题!考完了出来,我就思索,是不是我的深度思考太少了,一度在想题目做不完怎样,但是实际上理解题意,想出方法才是最重要的!
昨天的一道题(尽管我只拿了20分的暴力分),我已经想到了斜率优化的模型套平衡树的做法,但是没办法删点(想到这个,我花了很长时间,但是我确实理解到了和平时浅层次的区别,区别很大。后来正解也说平衡树虽然容易删点,但是删点就不好维护凸壳)。后来一看正解,一直到维护凸壳这,都是一样的,只是要在线段树中套用vector,同时离线几个状态来解决(这谁想得到)……如果我按照平时的想法,看到ax+by没办法维护,想了一想就不看了,那么很难理解正解。我也确实理解到了“用尽一切办法拿分”的含义,我想了很久,才发现要做出题来,必须处理ax+by,但是这个式子已经是最简的了。又想了很久,才令k=ax+by,可以把求最大值转化成求截距,转而求维护一个上凸壳。
考试时选择什么题是由我决定的,但是一旦选择了就要一头沉下去,像csp这种难度的题不是随意就能够做出来的。4个小时的时间,一定需要一个全局的把握。但是也不能因此禁锢思维,导致“被迫只能打暴力”。现在再回到刚才所说,本来只能得40分的暴力,要拿六七十以至于八九十,自然要通过深度思考。像第二题的那种,我虽然考试确实做不出来,但是我应该判断到三维dp的程度(二维或许也能做,但是绝对不是我的那种浅层次做法),像第一题也有不是用平衡树或者set才拿到高分以至于满分的。考试的时候,思路打不开是一件致命的事。
考试时,讨论也是一件影响严重的事。平时的“测试”,我总会讨论一下题目,很多时候,都是我在问别人我觉得困惑的事。由此我是难以在考试时跨过看似简单的思维屏障,平时的讨论完全破掉了这个机会。考得题很简单,那没事,各自做各自的。一旦有了难度,无论是稍微卡一下,或者是非常难的那种,我都是不自觉的想讨论(或者是考试后看题解,对着代码改题)。说实话,上一个月的训练是打了折扣的,尽管做的全是基础题。实际上考csp,没有谁会讨论的,有的只有监考老师的脚步声和敲代码的声音。
考csp给我提了个醒:考试只有一次,只有那4小时,用完就没了,之后的高考也是这样。或许noip的题比csp的题还要难,各种神奇的题目都可能会出现。也极有可能出现我一道都不怎么有感觉的情况。但是自从csp考完后,我应该用考csp以及noip的态度去面对这些题目,再难的题也不能就此放弃!(心境是有很大不同,但是考了一次csp,下次noip应该会好得多了)
胜不骄,败不馁。认真迎接noip!