GDOI2022 普及组游记

第一次写游记。

前言 & 个人评价

GDOI2022 普及组:干两天,每天干 3.5h,下午讲解。

我感觉这次比赛好难哇(当然是因为我太蒟蒻了),题目大概分三种:

  • 过度简单题

  • 困难思维题

  • 大模拟(啊啊啊啊啊啊啊啊啊啊啊啊x1)

出题人声称:

这次比赛更偏向思维(没错过度偏向思维)。

比 CSP-J 难一点(实际是难亿点)。

考试也没有规定不能出大模拟,所以这是合情合理的。(无话可说)

尽管如此,我还是相对满意的,因为基本没有挂分(注意基本二字,这说明还是挂了分)。

吐槽:没有大样例!我没法检查!啊啊啊啊啊啊啊啊啊啊啊啊x2

Day -1

刷线段树的题。

然而普及组不考线段树,所以等于没刷题,不过练手感的作用还是有的。

Day 0

干数学题。

Day 1.0

解压包密码:hope to see you soon

提前几分钟打完 freopen() 等文件,基本是准时开始做题。

T1 大淼,\(O(n^2)\) 的无脑写法都能过去,但我还是写了个 \(O(n)\) 的。

十分钟左右过掉。

T2 有点难,最最朴素的暴力 \(O(2^n \times n!)\) 一个点都过不去,赶紧放弃。

T3 是树,感觉有希望,但为了保险,先去看 T4。

T4 发现暴力 dfs() 能打,大概打了 10-20min 搞定。

再思考了一小会,还是没什么思路,就跳去 T3 想题。

T3 耗费了我很长时间,打了 1h 左右的暴力,预计 20pts。

还有 1.5-2h 左右的时间呢,不急,就重新返回 T1 打了个暴力简单对拍了一下。

T2 又想了很久,10min 左右后仍然没思路,T4 同样道理,只好给 dfs() 卡常。

又回到 T3 了,我额外手造了一点数据,好像没问题,就又过掉了。

* 这里是整场比赛最需要反思的地方,因为耗费最长时间打的题目,爆掉就非常惨,后面还会说。

再翻了一遍 T2(注意,T2 我没有任何骗分方法),认为是有机会想出来的,第六感告诉我,代码不长,有机会!!!说这个有屁用啊最后不还是没打出来

感觉都做得差不多了,可考试还剩 1h 呢,闲来无事用 5min 左右加了下快读,并给所有程序都卡了一遍常数(比如,函数前加 inline)。

接下来还能有什么做?思考呗。

这段时间没有任何进展,过程自己也忘掉了。

吸取 CSP-J 的悲惨经验,我仔细检查了所有 freopen()

还有 10-30min,我突然发现 T2 无解输出 \(-1\),于是赶紧骗点分。

为了避免 T2 浪费掉,我又自己猜了几种特殊数据,并特判一下。

再然后又双叒叕检查了 freopen()。因为实在没事做了(放弃

预计得分:\(100 + [0, 10] + [20, 60] + 20 = [140, 190]\)

实际得分:\(100 + 5 + \color{red}{0}\) \(+\space 20 = 125\)

呜呜呜,T3 挂成 0pts 了,到现在我还不知道为什么挂了。

Day 1.5

听讲解。

T1 略。

T2 懂了,代码的确很简单,不过这也太难想了吧。第六感正确

T3 不懂。

T4 要微积分,恶心,不懂。

Day 1.8

好好反思了一下,决定根据讲解中的方法进行做题。

每一档分都是有关联的,部分分可以引导你做出正解。

Day 2.0

解压包密码:always wear a mask

T1 是《点 指 兵 兵 点 到 谁 人 做 大 兵》,还挺好玩的(bushi

不淼了,说正题。

T1 一下子就想到了 \(O(T \times n)\) 的解法,10min 内轻松拿到 80pts。

但是 Day2T1 没有 Day1T1 顺利,稍微想了 3min 没有正解的思路。

看T2,显然可以转换成树问题。

我暴力竟然不会打,无奈之下 5-10min 打了两个 special-subtask,20pts 的分数还是可观的。

瞄了一眼 T3 就崩溃:这是 \(\huge \text{大模拟}\) 啊!

怕没时间做,决定只做前几个测试点。

与 Day1 策略一样,我先看 T4。

T4 不就是 dfs() 吗?好像是耶,貌似可以通过此题。

打了 2-5min,突然看到一行字:

为了增加考试的难度,俱乐部提供的机器人的信号接收器都存在问题。
换言之,对于小纯给出的每一条指令,机器人有可能接收到指令并执行,也有可能接收不到指令并保持不动。

突然就明白 dfs() 是不可能淼 T4 的对吧。

啊啊啊啊啊啊啊啊啊啊啊啊x3

然后思考了 1-10s,我想还是可以打 dfs() 的对吧,\(O(2^n)\) 可以过第一档分。

于是打了 30min 代码(不愧是 T4,暴力都要打这么久),终于打完了 10pts 的分。

至此,第一波打完,还剩 2h 有余,我决定尝试 A 掉 T1。

诶,根据 special-subtask 还真被我想到了正解!!!

看见了吧,Day1.9 的反思还是有用的。

T1 20min 多才打完,时间复杂度 \(O(T \times \sqrt{n} \times k)\)\(k\) 较大时,是 \([3000, ?]\) 的一个常数。

因为常数有点大,我输了一下 \(n\) 的最大值 \(2 \times 10^9\),好像挺好的。

不知道算法正确性怎么样(因为反向去重没练过),所以弄出之前的暴力,依次对拍 \(n = [1, 10^6]\) 的数,都没出错,还是很高兴的。

啊,时间还有 1-1.3h,怎么办?

我竟愚蠢地选择了思考 T2 而不是打 T3 部分分。不过这关系不大,事实证明我完全有时间先打 T2 后打 T3。

啊哈,手玩了几组自己造的鬼畜数据,发现一个 dfs()\(O(n)\) 做法,应该是没问题的。然而我不会证明QAQ

我 5-10min 就写完了,由于暴力太难写,我无法验证程序正确性,只能听天由命啦!你个 GDOI 不给大样例烦死了

还剩 1h,用很长的时间给大模拟手打了个表,然后把前两档最简单的分拿了。

剩下的时间,检查一遍所有程序的 freopen(),然后思考 T4 最终没有其他进展了。

预计得分:\(100 + 100 + 10 + 10 = 220\)

实际得分:\(100 + 100 + 10 + 10 = 220\)

欧耶!没挂分!

Day 2.5

T1 做法和我大致相同,不过我没用 unique() 去重而是手动去重,吃了点亏,还好时间复杂度相同。

T2 的证明懂了。

T3 大模拟懂了,前缀和竟然可以 \(O(1)\) 过。

T4 正解 dijkstra 我是真没想到。大致懂了(毕竟我会堆优化+链式前向星dij)。

尾声

总分:\(125 + 220 = 345\) 这分数其实挺低的,一堆 dalao 六百多分。

不过实力基本(又是这个词!)都发挥出来了,所以并不觉得遗憾,特别是 Day2。

还没公布排名,等公布了就加进来吧。
首发:2022-04-20 22:55:06

posted @ 2022-08-26 01:42  liangbowen  阅读(110)  评论(0编辑  收藏  举报