【游记】哭笑不得的 GDOI2022 游记
哭笑不得的 GDOI2022 游记
之后会补上 GDOI2022 PJ 的题解。
Upd: Solution
Day -?
本来是要参加省选的,但是出了一点小插曲。
由于疫情防控要求,我们这些初三的参加不了省选了,只好参加 GDOI2022 普及组线上赛来代替。。
而且更离谱的是这个通知一下达我们就立马滚回家上网课了(
“听说你们停课了?”
“是的,停了几个月。”
“考得怎么样?”
“打了场普及组线上赛。”
教练很诚恳地说非常对不起,我也很理解,但是心里莫名感觉难受。怎么说呢,疫情这也是没办法。。
奥*克戎什么时候*啊。
Day 0
装好了需要的录屏软件,下载了题目压缩包,搞好了编程环境。
准备明天开考。
Day 1
早餐时喝了一大杯牛奶,感觉不妙。
8:10 开始录屏,过了一会发现录屏质量是最高,于是赶紧调到了最低重新录。此时是 8:16 问题应该不大(
8:25 发放压缩包密码,\(\texttt{"Hope!To@See#You\$Soon"}\),这是要干嘛啊。
8:30 考试开始。Day1 有四道题:邹忌讽齐王纳谏、数列游戏、流水线、小学生计数题。
看看第一题,简单模拟,\(5min\) 写完。
看看第二题,求完异或前缀和之后操作转化为删除一个数,所以答案显然,\(5min\) 写完。
看看第三题,一时间不知道怎么做。想过二分,但是好像不好 check(其实二分可做,同学写的是二分)。
中间去看了一下 T4,结果没什么思路。
然后开始考虑枚举最大值,然后发现贪心加点是正确的,然后用 std::set
维护一些东西。码代码+调试花了大概 \(20min\),然后过了样例。第三题花了 \(40min\) 左右。
看看第四题,仔细思考后发现枚举倍数分别计算很有前途。然后想了想,考虑排序后等差数列一定连续,所以要算的就是长度 \(L\le len\le R\) 的区间的乘积和。这个很好搞,花了 \(30min\) 写完调完。
回头看了看 T3,发现了 \(w_u\le w_{fa_u}\) 的性质。这样一来我的做法更对了。于是改了改代码,代码更精简了。
此时比赛开始大约 \(1.5h\)。
然后写了一下 T3 和 T4 的 \(O(2^n)\) 暴力对拍(我有什么办法,我只会最暴力的暴力和正解()。所幸没有发生什么大问题,改了几个小错之后就过了。
此时比赛开始大约 \(2h\)。
好像 AK 了,十分感动。
此时那一大杯牛奶开始发挥作用了,我剩下的时间里一直想上厕所,但是不知道允不允许就憋着了(
比赛开始后 \(3h\) 发现 T2 忘记判断无解了 qwq,于是思考了一下后发现无解 \(\Leftrightarrow\) 异或和为 \(0\)。
终于憋到了 12:00,比赛结束。估分 \(100+100+100+100=400\)
Day 1.5
考后和同学交流,发现大家似乎普遍 AK 啊(
有的同学录屏估计没有调画质,导致文件太大传不了邮箱(
还有同学 T2 的无解判错了,判成了答案为 0 时无解,我发现我居然也曾经以为过是这样的,好险。
大家 T3 似乎都用二分做的。找了一个人对拍 T3,结果一拍就挂。仔细排查后发现数据不合法,存在 \(w_u>w_{fa_u}\)。(二分做法不必考虑这个限制)
有个同学说 T4 写了 \(O(n\sqrt n)\) 枚举因数,然后被卡常。我也不知道说什么好。
此时的我还没有发现一个严重的问题,不过话分两头,我们先讲 Day2
Day2
不吸取前一天的教训,又喝了一大杯牛奶。
密码是 \(\texttt{alwayS*weaR*A*masK}\)(中间特殊符号忘了,也没记下来),好家伙,末字母大写。
(两天密码大概是说如果不带好口罩就要在方舱见到你了?????)
Day2 有四道题:点指兵兵、网页浏览、教室的电子钟、机器人。
看看第一题,发现 Day2 比 Day1 难很多,不过 T1 还是蛮简单的。转化一下变成枚举因数,可以根号做。T1 耗时达到了 \(30min\)。
看看第二题,没什么思路。思考一会后推出了一个结论,然后写了一个迷惑做法,耗时 \(30min\)。
看看第三题,他奶奶的,是一道大模拟,还是日历题。
int main()
{
//年轻人不讲武德,出大模拟,偷袭!
return 0;
}
看看第四题,好像比较可做。先想到了一个暴力加 bitset
优化,码完调完后发现大数据一个点就要跑 \(10s\)……很没前途。于是开始想别的办法。
此时那杯牛奶开始发作了,极大影响了我之后的发挥(
没什么思路,于是回头看了看 T2。看了看样例解释,略加思考后发现以前的结论是错的。然后我写了一个 DP,过了样例,又手玩几个之后发现没问题,应该对了。
不想开 T3,回头看 T4。我灵光一闪:如果正着枚举字符串 DP 不可做,我就反着来,让每个位置去匹配字符串啊!好!非常有前途,大概需要一个子序列自动机维护一下广搜就行了。
花了 \(30min\) 左右码完,调了一会过了样例。然后和原来的暴力对拍,发现挂了。调了 \(30min\) 才发现一个点可能多次入队,于是把广搜改成类 SPFA 的东西就可以了。但是复杂度暂时不知道多少。
此时比赛还剩大约 \(50min\)。我看了一下 T3 的暴力,发现枚举秒可以拿 \(70pts\) 的好成绩。于是开始码。大概花了 \(20min\) 码完。然后测了几个小数据,应该没问题。
看来 Day2 还是比 Day1 困难,不过这也有喝牛奶的原因在(
估分 \(100+100+70+100=370\)。
Day 2.5
和同学探讨,发现为什么那么多人都写了 T3 这个鬼东西啊 qAq。
然后有一个人发现忘删调试代码了。。默哀。
得知 T2 的结论是节点数+叶子数,发现和我的 DP 本质一样,放心了。
接着一个样例让所有写了 T3 正解的人都挂了。。但我的暴力存活了下来(
而挂掉 T3 的人好像都没时间做 T4 了……
所以说,写大模拟得不偿失。
Day 2.51
Day1 成绩早出了,所以去查了一下。
书接上文,这一查不要紧,我发现了一个问题:
这是正确的 freopen
:
freopen("zouji.out","w",stdout);
这是我写的 freopen
:
freopen("zouji.out","W",stdout);
好家伙,直接文件输出了个寂寞。
还好,这东西没有大毛病,只不过四个代码都是这么写的,也没有大影响,只不过我 Day1 保龄了。
晚上查了一下 Day2 的成绩,还好,没大问题,和估分相差不多,\(100+100+70+90=360\)
然后同学们 Day2 挂得挺惨烈,最惨的只剩 \(100pts\)
总结
其实总体来说,考得相当不错,除去不可抗力因素,我有 \(750pts\) 左右的好成绩,足以在全省位列前茅。
但是小写写成大写这种东西。。我也无法总结是因为什么。