2020省选联考翻车记
正所谓光脚的不怕穿鞋的,今年是我第一次考省选,本来也没打算进队,心态非常放松。星期五(6.19)去试机,发现有windows,我还感到很开心。晚上睡得不错。事实上省选的两天精神状态都很好。
备注:两天的考试时间都是8:30~13:00。
day1 大翻车难以挽回,太贪心满盘皆输
摘要:\(0+40+[0,15]?=[40,55]?\)。
最后\(10\)分钟把T1改WA了。
T1,经过简单的转化,变成一个可以用二分+数据结构维护的问题,进而联想到使用线段树上二分。这个思路是比较自然的,题是简单题,难点是卡常。这题正解是\(O(n\log n)\)的复杂度,数据范围\(2\times10^6\)。下一档是\(2\times 10^5\),只有\(60\)分,估计本来是想给\(O(n\log^2n)\)的,但写线段树上二分一不小心常数写大,\(100\)分就挂成\(60\)了。
高手会用树状数组来实现,轻轻松松通过(%%%罗神)。我和大部分人一样写了线段树上二分(完全不知道这么复杂的操作用树状数组怎么实现啊QAQ)。而且我写法比较丑,查询时要调用线段树三次,这就导致我常数非常大。随机数据本机跑了5秒多(事后知道本地电脑很垃圾)。当时写+卡常一共用了3个多小时。看时间不多了,只好假装AC,去看T2,T3。
T2有\(15\)分纯暴力,接下来\(25\)分\(m=0\)是套用二项式定理,我也拿到了。也就是总共得了\(40\)分。事后分析我还比较满意。这道题正解是一个数学技巧,见过就会做,没见过就不会。所以考场上碰到了,不会做,那就是你套路见的少了,咱得认。(upd:后来发现这对我来说,不仅仅是一个技巧这么简单,还有求导等前置知识。因此我认为概括为数学能力的整体不足,较为准确。)
T3我认为是本次联考最难和最“不可做”的一道题了(对一般水平而言,大佬勿喷)。首先题面就很绕,看完也没什么头绪,看不出方向。所以就直奔暴力分了。\(15\)分,我写了个\(O(v^n\times{n\choose m})\)复杂度的做法,算出来非常卡,但实际上常数应该会小一点,也不确定能不能过。更高的分我就完全不会了。
写完T2,T3暴力回来,还剩最后\(10\)分钟。本来我的T1程序不改,就是正常拿\(60\)分(机子快甚至可能\(100\)分)。但是我不知道怎么搞的,就想魔改一通(在线段树上剪枝,也不知道我哪来的想法 2333)。结果改来改去,给改WA掉了。回家一测才知道,连小样例都过不去。所以T1就这样爆零了。说来,其实就是因为自己太贪心,不满足于\(60\)分,忽略了求稳,所以挂的很惨,而且(加上csp考的也不高),今年省选已经难以挽回(也就是今年连D都不可能有了)。
upd:如果没改T1,就是100,而不是之前以为的60。
day2 正常发挥切T2,总分依旧不如人
\(30+100+50=180\)。
上来看题。不太会T1, T3。看T2题面好懂暴力又好写,所以决定先刚一刚T2。
T2是个树+异或有关的题。纯粹的暴力复杂度是\(O(n^2)\)。考虑从\(u\)向\(fa(u)\)的变化,相当于是把所有子节点的权值\(+1\),再求异或和。我不知道有什么数据结构能实现这个(当时没想到trie树)。我罗列了很多想法,例如维护每种值的出现次数(进一步转化为只要维护出现次数的奇偶性),再每次把整个数组右移一位,但这样仍然不好计算答案。之后又想到按位考虑。这个方向对了。考虑一个节点对它祖先的贡献,因为每向上一步值\(+1\),所以对祖先的贡献,每\(2^i\)为一段。这样我们只要做一遍dfs,用一个栈维护所有的祖先即可,回溯时打标记即可(类似于差分)。经过这样复杂的思维,我总算是做出来一道题。
写完T2时大概是10:00,我又不放心,做了半天常数优化,最终10:45左右开始想T1 T3。我认为这个时间分配还算可以,我需要用比较多的时间,去保一道能AC的题,这对一场考试很重要。
接下来看T3,第一档部分分是\(2^m\),纯暴力。第二档部分分是\(m\leq n\),分\(m<n-1\), \(m=n-1\), \(m=n\)三类讨论一下即可,只要愿意写,也比较简单。第三档部分分相当于所有生成树权值相同,所以只要做一个生成树计数即可,直接上matrix tree定理。这三档部分分加起来一共有\(50\)分,看起来比较多,所以就先写了这个。因为写了三个subtask,还要相互对拍,所以全部搞完已经12:00了,离比赛结束还有一个小时。
再看T1,先写了\(30\)分\(m!\)的暴力。其他的部分分,\(m\leq 20,21,22,23\),看起来就很像状压DP。\(O(2^m m^2)\)做法(其实非常简单),状态是考虑前\(i\)个位置,填了哪些数。然而我当时一直想的是,考虑前\(i\)个数,用了哪些位置。然后死活不会转移。直到考试结束。如果能想到正确的状态,T1就\(70\)分起步了(这也是一般人认为的暴力分),然而我只有\(30\)分,非常遗憾。
总体来看,我认为自己day2是正常发挥,但得分仍然比大部分人低:wzy哥哥翻车都有\(200+\),更不用说一大堆喊着“人均AK”的人了。如果说能提升的地方,就是day2 T1没想出\(O(2^m m^2)\)太可惜。
反思 day2 T1
前面说,day2 T1没想出\(O(2^m m^2)\)太可惜。为什么这么简单的东西想不到呢?我觉得跟心态有关。就是切掉T2以后,我的心态变了,变得很浮躁,潜意识里对自己已经满足了,所以难以做深入的思考。一道题,往往都是由表及里,有一个转化的过程的(用现在的话说,都是老千层饼了),这就需要思维一步一步向前走。而且每一步,你其实是从未知开始摸索,所以可能的方向有很多,需要你一个一个去尝试,去排除(就像前面写我想T2的过程,一开始也有一个不成熟的方向,后来被排除了),这时候,没有强烈的、做出题的欲望,报以一种浮躁的、试试看的心态,就难以想到正解。这就是为什么我能切掉T2却反而连T1的\(70\)分都写不来。
这种心态在我考csp时也有体现,我就不细举例了。我认为,这种心态非常危险。它带来的后果就是,以后在任何一场比赛中,我最多只能做出一道题,之后大脑就下班了!这太可怕了!必须立即做出调整,每道题都要静下心来分析。这一点在我平时的练习中,必须得到体现。
对题目的评价和总结
- day1 T1 数据结构题。简单题。卡常。
- day1 T2 数学技巧题。看数学水平和有没有见过套路了,难度不好说。个人不喜欢这种纯数学题。
- day1 T3 我还不知道算法。毒瘤题。放一道大家都不会的题压轴,我认为也能接受。
- day2 T1 DP。简单题。卡常(空间?)。
- day2 T2 数据结构,树,异或。中等题。
- day2 T3 矩阵树定理,数论,容斥。中等偏难。
从难度的分部上看,有点像csp:day1 T3是最难的,day2考三道中等的。
整套题,知识点考察比较合理(数据结构,DP,树)(常见知识点少了贪心和字符串)。虽然有数学题、毒瘤题,但常见知识点考察的也很到位了,这一点要好评!
卡时间,空间,就比较无聊了。
我个人比较喜欢 day1 T1, day2 T1 和 day2 T2,原因就是知识点合理,难度适中。
有些题被发现是原题,但是我觉得,只要我没做过,能让我有所收获,那就是好题。而且据我所知,见过原题的是极少数,大部分人是考完才听说有类似的题目的,没有影响到公平性(况且谁规定不能考原题了?做的题多不也是本事么?)。
总体来说,我认为我还是挺有收获的。
考完省选,就又是新的一年。我就要高二啦!想来,学OI的时间也只剩最后一年了,我要更加珍惜,努力训练。希望明年今天,自己的水平,能有大的提高吧。我还是充满希望的。(哈哈,我和djq正好互补了,我缺水平,他缺“希望”)。
附:江苏的榜
我最终220分,rank 42。在nfls,如果有5个D,应该是差一名拿到D。怎么看,这个故事都和罗神去年一样,可惜我没有罗神的实力。/kk
upd:拿到 D 了,因为罗神不屑于 D 参加 NOI,因为罗神让给了我一个名额(感谢)。
另外,徐队也是(ZJ)rank 42,所以我和徐队贴贴!