CSP-S 2019 游记


公无渡河,公竟渡河!

堕河而死,其奈公何!

新的 OI 赛事又要开始了.

Day 0

早一天 (Day -1) 就回家了, 看了考场还算满意, 或许是自己的要求不够高? 熟悉的 win7 x86 & 2 GB RAM 令人想起之前的老台式… 不过 win7 内存占用很少, 考场系统除了红蜘蛛以外还算干净, 因此 2 GB 用起来还算流畅.

软件配置和去年类似, 有 Vim 和 Dev-cpp 我就满足了. Dev-cpp 虽然不好用, 但是作为现场唯一提供的 C++ IDE 还是要尊重一下的 (雾, 毕竟 windows 的 cmd 用起来有种说不出的别扭, 有朝一日在考场用上 Linux, 再用命令行编译吧.

手写注册表改了改键盘映射, 罪恶的 Caps 和 Esc 回到了科学的位置, 临时背的注册表好像有点锅, 不想修了. 本想在试机的时候刷个板子熟悉一下键盘, 后来因为有家长在等就作罢了.

HA 省机房槽点还是挺多的, 键盘主键盘区的 Enter 生怕不被误触而做的出奇的大, Backspace 为鼓励不写错而惊人的小… 其次就是空调足以把人热 sha, 通风也不是很好, 整体的空气有一种封闭的感觉.

到家后开始刷知乎, 我也不知道为什么就刷了很久, 晚上意识到自己太颓, 随便找了到自己鸽掉的 NOIP 真题写了一道, 思路不假, 只是可惜实现时还是参考题解, 希望在明天自己的代码思路能更明了一些吧.

回想了最近复习的流程, 还有些不常打的模板没有写, 因为不常打所以不熟, 然后就不想打 = =. 一意识到自己还有没打好的板子, 有种晕眩的紧张感. (还是不要太紧张好了.) 复习的过程还是有漏洞, 对于以往难写一点的 NOIP 题目, 应该在这周再写写, 同学从 qbxt 带来的模拟题, 也是要写写的. 但是这些事情都没有做, 只好携我两袖清风, 踏上考场了.

这周在学校的几个晚上不能用电脑, 无聊翻翻紫书权作复习. LRJ 的书果然是 OI 真理啊

但是有一点需要注意: 理解一个题解和自己独立推导出所有细节还是不一样的, 所以在看完一个难题题解之后最好把它做两遍: 一遍是刚看完题解以后 “趁热打铁”, 一遍是等忘掉题解后自己从头推导一遍.

——— 刘汝佳 <算法竞赛入门经典 (第 2 版)>

附, windows 下修改注册表使得 Esc 和 Caps 互换的注册表文件, 还是喜欢 Linux 一行命令解决的简单方式:

1
2
3
4
Windows Registry Editor Version 5.00

[HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Keyboard Layout]
"Scancode Map"=hex:00,00,00,00,00,00,00,00,03,00,00,00,3A,00,01,00,01,00,3A,00,00,00,00,00

Day 1

七点五十多的时候发现大家都到了, 其实我到得还算早, 只是恰饭浪费了时间… 会合后照例谈笑风生, 开始各路毒奶:

“请问有省四这种奖吗?”

“我现在开坑 CSP-S 2019 Day 1 题解, CCF 会不会把我禁赛三年啊?”

“我 Day 1 是不可能 200 分以上的, 我要是考到 200 分以上就女装.”

“我拿一等我就女装.”

“您是不是 AK Day 1, 明天就不用来了?”

……

啊, 这群人考好点就有戏看了~

咳咳咳.

Ren2Zhen0Si1Kao9?

进场后, 空气比昨天要好很多了, 配置考场环境也没有出什么大问题.

拿到题后, 强迫自己看完三题题意, 本想直接写 T1 的, 怕不是 CF 写多了, 后来还是等半小时后再动键盘.

  • T1

    看到给出 “格雷码” 的完整构造方案以为这题和 神奇的幻方 同源, 看完数据范围后才发现直接模拟会挂…

    考虑了一下, 写出了一个构造方案, 感觉可行就直接写代码了, (但是应去手算一下样例的, 这样就可以避免接下来会出现的错误了)

    结果没过第二个样例, 确认代码没什么问题之后就又去读了一遍题, 果然是题目细节有疏漏, 修修补补算是过了三个给定的样例.

    考试时 WA T1 就直接重读题意的想法来自昨天刷知乎得到的经验, 这里想引用一句话

    一般这种题写挂就是没读懂题意, 回去重读题意就好了.

    你看我刷逼乎还是有点用的 (大雾)

    最大的遗憾就是没有写暴力拍 T1

  • T2

    看到题目后就有 $O(n^4)$ 的带暴力想法, 本着 NOIP CSP-S 暴力打满的精神就先写暴力, 写出来前两个样例直接过了, 开始考虑怎么优化. 想了一会有 $O(n^3)$ 的 DP. 当时我兴致勃勃的去打这个 $O(n^3)$ 的 DP, 因为我算错复杂度以为这是 $O(n^2)$ 能拿到 $50 pts$.

    好在写出来之后及时发现时间复杂度是假的, 更好的事情是, 再优化到 $O(n^2)$ 也不算难. 改完没能过样例, 心态有点爆炸, 调整一会心态之后部分重构了, 算是过了第二组大样例.

    临近考试结束, 拿着 $O(n^3)$ 的暴力拍了一下, 即便用脚随的数据很假也算是过了几十组. 脑子一热拿这破机子去跑了 恶 臭 不 堪 的第三组样例, 本机上 RE, 检查了一下认为是本地爆栈的问题就不打算管了, 毕竟我也不会手动开栈这种 “禁赛三年” 的操作… (雾, 你的手动 O2 是怎么学会的)

    感觉这题放在 Day 1 T2 应该不会是难题, 可能是我有关键点没有把握, 没能想出来正解是我的无能. 如果因为 T2 退役也是不会令人懊恼的事了. 竞赛的事情啊, 还是以个人实力为基础吧.

  • T3

    很像是贪心的样子, 不过有贪心策略就能在 $O(n)$ 的时间得到答案, 所以我一直在想枚举一点, 贪心一点的算法.

    只是…没有什么好策略.

    刚开始拿到题目之后, 肤浅地认为这题的分应该好拿, 解决特殊性质和小数据就可以得到不错的分数, 而链和菊花的情况也会好想一点. 后来的事, 就是我想多了.

    $O(T\cdot n!)$ 的带暴力好哇! 虽然写的时候心不在焉, 导致自己调了好久…

离开考场之后见到 star, 听完情况之后一脸失望.jpg.

下午看了看民间数据, 好多人表示 “T1 大样例都过了, 可是交上去却没拿满.”, 有点心慌, 看来对拍一定要写, CSP-S 还是稳一点好. T2 有 $O(n)$ 的 DP 做法, 没想到的原因除去我太菜, 还有时间复杂度死找 log… 最近写比赛总是被数据范围误导, Day 2 要抛开 && 灵活一点了.

Day 2

昨天周围的人大多没有考得很好(指达到贵乎 $210 pts$ 水平),今天表情都挺阴沉的,可能都在想翻盘的事吧

@zhuajin1SHIJIAN7

  • T1

    只要我 T1 能写出来,在 HA 我可以绝杀!NOIp 提高组 Day 2 T1 你能秒我,我当场就把这个电脑屏幕,给吃、下、去!

    好的,T1 愉快的写炸了

    开考前毒奶“今天不会有数数题吧?”,算是奶到了?开始认为是组合计数、容斥原理之类的东西,加加减减乘乘除除就可以了,以及模拟赛计数题就没有写对几题的经验,开考之后把 T1 先搁置了,愉快地去看 T2 以及 T3 了

    T2,T3 暴力写完之后一直在想 T1 的正解,无果,于是就有了上面那段自嘲的段子。结果到 11:30 的时候 T1 暴力搜索还没有打出来,心态近乎崩溃,有一种挣扎无望的感觉,最后提交代码的时候也只好交了过不了第二个样例的假暴力。

    实际上暴力可以拿到 $40 pts$,没有打的确可惜啊

  • T2
    一眼看过去有斜率优化 DP 的味道,推了推式子感觉能做,写的时候发现假了,要求新数据的规模能够递增这个限制没有考虑到

    想到 T1 没有 A 掉的把握心有点凉 = =,所以愉快地打起了 $O(n^3)$ 的暴力 DP,没能优化到 $O(n^2)$ 或是 $O(n^2\log n)$,于是 $36 pts$ 滚粗

    考虑 T2 的时候有监考老师过来:“对于 type=0 的所有测试点,保证最后输出的答案 $\leq 4×10^{18}$”。赛后出题人称使用高精是为了防止取模会直接 pass 掉 DP 做法,不过贪心策略也没能想出来,告辞

  • T3
    动态求重心 X
    暴力求重心 X
    大暴力求重心 √

    重心板子执意没有复习,论据:“重心这东西也就点分治用过啊,CSP-S 不会考点分治吧?”诚然,没有考点分治,但是这一点都不影响 CSP-S 考重心 = =

    原来的期望做法为 $O(n)$ 枚举边,$O(n)$ 求重心,总计 $O(n^2)$ 可拿到 $40 pts$,不过忘记了 $O(n)$ 求重心的做法,考场脑补了一会也只给出了 $O(n^2)$ 的做法,于是总计 $O(n^3)$ $25 pts$ 结 束 战 斗

今年的 CSP-S 结束了,明天就要回班里补文化课了。估了一下分数, 可能算是省二左右的分数吧. 如果就此退役, 也没有什么不好. 或许是之前的想法太过于极端了, 偏执地认为不学 OI 就没有什么想要继续去做的事情了, 但是如果真的发生了, 还是会偏向默默接受的态度吧.

期望得分: $100 + 50 + 10 + 0 + 36 + 25 = 221 pts$

后记

CCF 的官方成绩出来了, 比期望得分要高一些, 看教练那里的排名, 借着 HA 省是弱省的优势也能够拿到省一了.

Day2 T3 的 $O(n^3)$ 暴力似乎拿到了 $O(n^2)$ 的分数? 感谢 CCF 少爷机 ( 其实复杂度就是 $O(n ^ 2)$.

今年的遗憾就是没能 CSP-S 没能上 $300 pts$ 了, Day 2 发挥的尤为不好, 坐在考场上没有蓄势待发, 激情四射的感觉, 从内心似乎有些颓势吧, 思维也不是相当的活跃. 之前总是有一种错觉, 偏执地认为自己是 “大赛型” 选手, 平常写不出来的题, 到考场上或许就能写出来了; 平时容易错的东西, 到考场上也许就可以不出锅了. 其实不是这样.

原来自己之前只是机械的找题, 写题, 学算法, 没有注重于自己独立思索的能力. 以后要多加注意了.

省选, 再会了.