CSP-S2 2019 游记

我简直是咸鱼,一只彻头彻尾的咸鱼。

慵懒,成为了我本次比赛的主调。

10 月 27 日晚上——也有可能是 10 月 28 日的凌晨,睡眼惺忪的我坐在书桌前,照常奋笔疾书着。作业本放回一本又拿出一本,练习材料做完一张又掏出一张,我就这样机械着循环反复着,完全看不到尽头。

在这种困倦又疲劳的情形下,我申请了停课,开始为 CSP-S2 做准备。

写完停课申请的我仿佛如释重负,用最后一点气力把作业扔到一旁,然后摊到床上,不久就睡熟了。


为期三周的训练,是缓和而有趣的。每天早上七点钟起床,慢条斯理地吃完早饭后悠闲走到学校,参加校内举行的提高模拟赛。在三个半小时里,我只愿意思考每题的满分做法,对部分分置若罔闻。倘若遇到三道简单题,被一个半小时穿了,我们便开始“指责”出题人不会出题;倘若遇到难题,思考无果或想到一种码量超级大的做法,我们便开始骂出题人毒瘤。下午原本安排的订正计划被我直接抛到脑后,跟着几个同学带着麻将,到隔壁空着的 VR 教室一起玩。一个个工作日,就在这样“欢快”的气氛中,快速地流去。

11 月 15 日,第二天就是正式比赛了,但我不想紧张,也懒得紧张。我自大地认为,凭借我的能力,两天比赛总分上 \(500\) 不在话下,考前只要尽可能放松就可以了。


11 月 16 日,CSP-S2 2019 Day1。

考点就在自己的学校,我感受到了极大的便利。不单是仅靠步行就能到考点,更是我熟悉这里键鼠的手感。如往常一样的,熟练地接受安全检查、熟练地找到自己的位置、熟练地关掉安全软件、熟练地配置好 FrC……一切都是那样熟悉与亲切。

8:30 准时开题。

看到第一题时,我被那长长的题面吓了一跳。

细细读完后,发现只需模拟题意反着推一遍就可以了,再观察一下数据范围,\(n \le 64\),那需要 \(\texttt{unsigned long long}\),输入是 \(\texttt{%llu}\)。另外就没有什么细节了,我就开始实现。

大概 8:40 的时候,过样例了。我又测了一组 \(n = 64, k = 2^{64} - 1\) 的数据,发现输出是 \(10000\dots\),感觉很有道理,就没有再管它,去看下一题了。

第二题似乎是要求括号序列数。读完题,我第一时间的反应是:

根据套路,某个点之前的括号序列不好统计,那就统计以某个点为结尾的。

根据套路,括号序列可以用一个栈维护。一个右括号可以与栈顶的左括号转移。

于是我会做序列的情况了。

根据套路,dfs 到树上的一个点 \(u\) 时,dfs 栈内所有点恰好是 \(u\) 在树上的所有祖先节点,且按照顺序排列。

于是我也会树的情况了。

又思考了细节,似乎没有的样子。

接着就开始打了,大概 8:50 的时候过了样例。然后写了个 \(\mathcal{O}(n^4)\) 的暴力作对拍,就放在一旁去看第三题。

9:00 进入第三题,似乎可以 AK 的样子。

读完题:这题还挺有意思的。\(\mathcal{O}(n \log n)\) 做法似乎很不好想。

看到 \(n \le 2000\):天哪这不是简单题吗,把贪心 + check 路径的 \(\mathcal{O}(n^3)\) 用树剖之类的东西维护一下不就做到 \(\mathcal{O}(n ^ 2 \log n)\) 了吗。

接着开始写,写了半个小时左右,发现过不了样例的第二组数据。小黄鸭调试法找不出什么问题,手玩一下才发现 \(5\) 号节点上不去,而题目要求每条边必须被删除。换句话说,我想的贪心是错的。

我无比懊悔,赛前教练无数次地提醒过,想到一个做法时,一定要仔细检查它的正确性,以及注意它是否存在细节和边界问题。在这题上,我被欲望冲昏了头脑,忽略了教练的忠告,导致了将近一个小时的时间被浪费。

我开始苦想正解。大概一个小时后,我还是没有任何思路。

11:00,我才终于决定写第三题的暴力。

根据我的经验,这样的题目,暴力应当是很好打的。在往年的 NOIP 赛场上,每题的暴力分都达到了大六七十。

\(n \le 10\),随便 \(\mathcal{O}(n!)\) 枚举一下就行。

树退化成链,贪心从小到大考虑……诶等等,一个节点似乎可以把它的权值先转移走,再赋为其它的权值……这样与先交换后跨点交换好像是等价的,那就对原序列建一个双向链表,然后维护一下贪心似乎就可以了。

我这么去写了,写了半个小时,又调不出来。而且还不知道是做法假了还是实现假了。

算了不想链了,去想想菊花。菊花似乎就是找到一个大轮换,使得排列字典序最小。那这样直接贪心找并查集维护就好了,感觉复杂度没有问题,还特别好写。

五分钟左右写完了,过了样例,\(10\) 以内的数据和暴力拍没有问题。

剩下的时间我全部在调链,始终没调出来。

最后一题 \(35\) 分收场,太难过了。我无比自闭,因为我的经历告诉我,一名出题人,尤其是在这种官方比赛里,如果出了一道难题,那么部分分一定会给非常多;这也就是说,如果一题的部分分非常少,就说明这是一道简单题,除非出题人希望被喷。

按照这种部分分水准,这题应该是一道简单题,应该又是一天全场 AK 的 Day1,又是一天没有区分度的 Day1,但我被区分了。

出考场时,出我所意料的,又如我所希冀的,我校一位 NOI 银牌大佬开始问候 T3 出题人的家人,旁边还有一群人跟着附和。

我上去打听了一下,没有一个人写出正解,也没有一个人写出链,甚至没有一个人写出菊花,全部都是 \(10\) 分。

有一位同学想出正解了,但他说细节太多代码非常难写,三个小时打不完。

有好多同学有 \(\mathcal{O}(2^n)\) 做法,但出题人没给部分分。

还有一位同学有 \(\mathcal{O}(n^5)\) 做法,但出题人也没给部分分。

我在疑惑与不解中,结束了这没有区分度的 Day1。考后把程序放到各大 OJ 的民间数据测,结果都是 \(100 + 100 + 35 = 235\)


11 月 17 日,CSP-S2 2019 Day2。

这真的是我做过的体验最好的一套题,发自心底地说。

区分度良好,思维难度不太大,码量适中,有 AK 可能性。比 Day1 好了太多太多。

第一题,果不其然来了一道 \(998,244,353\)。我一开始想的是枚举菜品数,然后组合数计算方案,结果发现 \(a_{i, j}\) 可能不同,组合数派不上用场。

正卡壳之际,我又想起教练赛前传授我们的经验:题目给的每一个条件都至关重要,不能浪费。于是我开始考虑这个 \(\lfloor \frac{k}{2} \rfloor\) 的限制有什么特殊之处。

自然地,我想到了只会有一个数大于 \(\lfloor \frac{k}{2} \rfloor\)。也就是说,一种不合法的方案中,一定有且仅有一件主要食材超过使用限制。这使得枚举不合法方案成为了可能,容斥的做法被摆上了台面。

接着,我大胆的设计了一个状态为 \(n^3m\) 的 DP,因为我知道这肯定可以优化。果然发现有两维可以作个差分压成一维,于是复杂度就变成了 \(\mathcal{O}(n^2m)\),通过了第一题。

这时候已经接近 10:00 了,我寻思对拍很难写,时间也不太够,就懒着没有写对拍。

做完第一题后,我同时看 T2 和 T3。发现 T3 的 \(75\) 分暴力非常好写,性价比极高,就花了十几分钟写完了,过了样例。同样是没有对拍,因为太懒。

我深知,Day2T2 决定了全场比赛的成败。它不如 D1T1, D1T2, D2T1 一样自带签到属性,也不像 D1T3, D2T3 那样压轴防止 AK。作为腰部,一场比赛真正的区分度都需要在 Day2T2 这道题上体现。它往往思维量极高,极其考验选手能力。

我很快会了 \(\mathcal{O}(n^2 a_i)\) 的 DP 做法,大概有 \(24\) 分。

注意到区间和只有 \(n^2\) 种可能,我把 DP 优化到了 \(\mathcal{O}(n^3)\),大概是 \(36\) 分。

把递推式写出来,发现可以用后缀最小值优化转移,我又得到了一个 \(\mathcal{O}(n^2)\) 的做法,\(64\) 分。

这里状态就是平方的了。接着一个小时我全部在思考如何优化这里的状态数,大致思路是从分析 DP 值的单调性开始,然后试着能不能离散,用动态开点线段树去维护每一个 DP 的状态,然后线段树合并之类的整体 DP 技巧进行转移……

我还是不会,然后就果断放弃了,因为这样就算会了也打不完,只好 \(64\) 分交卷。

考后证明了,这道 Day2T2 是我最后悔的一题。

我随便问了几个同学,要么说自己看到题一眼秒掉,要么是不会高精度的拿了 \(88\)。当我问他们怎么做时,他们的回答是:“这不是睿智题吗,猜个结论就过了。虽然我不知道这个结论为什么是对的。但是你看着数据范围,显然不是个大聪明就不会往 DP 这方面去想嘛,这种 \(4 \times 10^7\) 怎么可能是 DP 呢,肯定是贪心或结论题啊。”

看来还是自己经验不够,我果然又被区分了。

Day2 结束了,民间数据测出来分数仍然是 \(100 + 64 + 75 = 239\),各 OJ 测都一样。

总分只有 \(474\),随便问个人都是 \(485, 498, 499, 504\),我哭了。

这道 Day2T2 给我留了太大的遗憾,到头来追究原因,才发现自己的失败在自己的慵懒中早已奠定。

我开始懊悔自己考前没有认真对待模拟赛,没有端正自己的考试策略。

我开始懊悔自己考前没有多刷题,积累做题套路。

我开始懊悔自己考前没有勤写题,导致写题速度偏慢。

我开始懊悔自己的懒,自己的妄自尊大。


结束了,回去学文化课了。

我感谢这次竞赛的经历,它带给我许多宝贵的东西。它让我意识到,自己作为一名普普通通的高中学生,所拥有的知识量是多么的浅薄,所了解的世界是多么的狭隘。我也从中感受到,学习是多么幸福、多么重要的一件事,只有努力学习积攒知识,才能被更多人正眼相待。未来路上,我将更加努力前行。

\[\texttt{by Tweetuzki} \quad \mathcal{2019.11.18} \]

posted @ 2019-11-18 20:13  Tweetuzki  阅读(400)  评论(0编辑  收藏  举报