THUSC 2022 游记

1. 前言

很久没有这种 OI/IOI(即有部分分)的比赛了,这次有机会参加 THUSC(类似 IOI 赛制,当场评测预测试数据,最终的数据与预测试数据仅有随机数种子不同),很期待。

大概是个打酱油的,不过可以通过这次比赛感受一下自己与别人的差距。

2. 赛前

只是看了一些模板,比如树剖、线段树、主席树、最短路(dijkstra)等。但是最短路并没有自己写一遍。

考前让下载的 OBS 录屏软件挺好的,应该比 EV 录屏强(至少专业一些,有各种录屏选项)。

3. Day1 赛时

一共 4 道“正常”的题。

首先我把所有题看了一遍,发现 T3 最不可做,叫“通信题”,因为之前没有见过,就跳过了。T1 用到应该是图论和期望(期望一直是我最抵触的东西,一般有关期望的题都不会),但题意似乎很难理解;T2 题面冗长但简化后的题意很好理解,大概是一个 dp 或者小清新数据结构;T4 是树上的数据结构。

由于先看到 T4 了,我就先做 T4T4 有关树上的链的操作,则大概需要用到树剖。这时我还暗自庆幸复习过树剖。想了一会,没思路,就先去看部分分。我发现:暴力有 30 分,剩下的一部分用树剖等做法也可以解决。到现在一共可以得到 50 分。我先打了 30 分的最基础的暴力,还调了一会,剩下 20 分难写,打算最后再写。

然后去看 T1T1 的题目背景写得很有文学色彩,不愧是清华的出题人。读完一遍,发现有两种可能。一种可能特别好做,另一种则很难做。我用好做的那种模拟了一下第一个样例,竟然对了。 我没有看样例解释,便开始写,还确信是对的。

写的过程中,用到了最短路 dijkstra 算法,又庆幸复习了。打的过程中,发现:虽然思路简单,但是不好写。一下就写了 150 行。写完后去测试样例,竟只有第一个样例对了,剩下三个都错了!我开始怀疑自己是否理解错题了,便想到了那种难做的可能。看了一下第一个样例的解释,发现正好对应难做的可能!此时,我才意识到我读错题了,第一个样例过去是侥幸!

此时我的心态有点崩,尝试提交那份代码,却赶上评测队列很长(需要 30 分钟)。我又看了一下代码,也许是写挂了,那种理解能得很多分呢!我便发现,原来当时为了测试正确性,数组开小了,而剩下三个样例都是大样例!我加上滚动数组,再次测试了这四个样例,发现竟然前三个样例都过了!我看了一下测试点的特殊性质,发现,我的错误理解正好在那几个点中与正确的理解相同!也就是说我可以用错解得到 40 分!我没有检查便赶快交了上去。

接下来去看 T2,发现暴力的 20 分很显然,而如果简单优化一下可以得到另外 30 分(也就是说我一眼秒了 50 分)。先写了一个,结果发现不太好写(码力太差),调了半天,不过最终还是写完了。

不知道中间什么时候,告诉 T4 的一个部分分更新了,而更新后那个部分分就是送分的,我赶紧写了一下便交了。

此时,评测队列已经特别长了,大概有一小时,所以我现在 T1,T2,T4 最新的代码都不知道分数,此时心里很忐忑不安。在 T1,T2,T4 之间反复横跳了一会,检查了一下,发现都没什么可改的。

时间过得很快,不知不觉就离比赛结束还有 30min 了,此时想去打 T4 的那两个部分分。犹豫了一会,开始写,发现其中一个特别难写,而另一个不能用系统自带的 set 而必须自己写平衡树,也很难写,我遂放弃了,怕写挂了影响前面的分。

又待了一会,结束了。

4. Day1 赛后

19:20 结束的,结束后评测结果才出来,我发现:T1 预料的 40 分竟挂成了 15 分(只过了第一个点),不知道为什么; T2 竟然没有挂掉,就是 50 分;T4 那个送分的部分分竟时间超限了,仔细看,发现自己居然傻到暴力跳 lca(和暴力的时间复杂度一样)求 x->y 路径的边的个数,而不是用深度相减 O(1) 求出来!这样的复杂度就退化成暴力了!(是不是当时太忐忑不安了,不知不觉写挂的)

我快速地吃了个饭,发现晚上有 ABC,准备打。打的时候状态十分不好,C 题都写了很久。到了 E 题,发现这道题可以用一个结论转化成最短路(dijkstra 解决)。我开始写,结果写挂了,最终调出来,发现自己的优先队列(priority_queue)写成普通队列(queue)了!改后便过了。此时我突然意识到,考场上写的 T1 的最短路是不是也只用了 queue?!我赶快查了录像,还真是!原来挂分的原因之一是这个问题啊!也许除了这个问题,还会挂分,甚至部分分思路是假的,但这种问题犯了就没戏了啊!

此时,Day1 的估分变成了 15+50+30=95

去问了一起参加的两个初二学长,分数都比我高多了,看来我 Day1 挂分挂得有点惨(虽然实力也与他们有巨大差距)。

5. Day2 赛时

之前听说 Day2 都是工程题,也就是“码农题”,大模拟一类的。题目的特点是:会下发一些网上的学习资料,而我们写的程序也要参考学习资料(考察选手的学习能力)。这对我来说是一个挑战也是一个锻炼的机会。在今年省选上,Day1 T1 大模拟写挂变成 70 分,是个遗憾。赛后给 hjl VP,结果他 1h 就一遍过了。这也更加让我对我的码力不自信了。不过这题的 5 道题总分只有 100 分,与 Day1(每道题 100 分)有巨大区别。

首先看到 T1,发现要编写一个解析 html 网页代码的程序。简单分析后,发现这是一道送分题,便写了。写完提交上去,发现提交很顺畅,但在第 3 个点错了。我没有赶紧调,而是去做其他题了,因为不值得对和 4 分花大量时间。

此时,我对这些题的估计仍旧是:剩下题都是很难的题,只要能做出来一点便是好事。

看到 T2,发现题面冗长,便跳过看 T3T3 的题面很简洁,可是重头戏在学习资料里:学习资料中全都是一堆公式。我经过简单的分析,发现,只要我们在输入的东西中提取出公式里需要的参数,并算出公式的值,便是答案。我将每一个参数的求法都一一列到了草稿纸上,理清思路后,便开始写代码。写完代码后,发现与答案的输出不同。经过一些比对后,发现程序中的一个公式与学习资料的公式不同,改过来就对了。交上去果然全对了。

接下来看 T4T4 仍然需要参考学习资料。不过这次学习资料只有一个公式,我研究了一会理解了公式,便开始写。写出来代码,样例的输出却很离谱。学习资料明明说这个东西是收敛的,但我的程序的输出却是发散的。我认为我应该是理解错了公式。此时,我突然想到,有两个学习资料,我可以结合另一个理解啊!我点开第二个学习资料,里面模拟了一个情况,果然我的理解错了。按照正确的公式改完后便过了样例,提交后也是不出意外的对了。

过了 T4 后看 T5,发现题面完全不能理解。学习资料有三个,写得也不能理解。我便回去看 T2。我发现,T2 题面已经说明了要干什么,不需要学习资料,而做法便是直接同时进行多个 dfs。使用栈维护即可。写完后,竟然没有调试,直接过了样例,提交后过了。

此时,我再回去看 T1 为何在第三个测试点错了。我注意到了三种需要忽略的情况:script,style,img。如果在 script 里放进一个 style,则我的程序便会出错。我发现,我的程序完全不能特判这种情况!冷静下来,我回顾了一下题面,发现我刚刚说的那种情况压根不存在。这又使我放下了心。大概是数据造错了吧!我便不打算继续调下去了。

剩下的一点时间,去看 T5 但还是读不懂。从那时到比赛结束,一直没有新的进展了。

6. Day2 赛后

赛后听讲题,得知 Day2 T1 的第三个预测试数据就是错的,最终的数据不会出现那种情况。所以我大概能对 Day2 的前四题。

7. 总结

这次比赛我相对来说 Day1 发挥不好而 Day2 发挥挺好。

Day1 的主要问题是把大部分时间浪费在 T1 上,而 T1 读错题了。最短路写挂也是不应该的。

其次的问题是 T4 的那个送分的部分分居然忘了复杂度这回事,直接暴力跳的。

需要改进的地方概括起来:

  • 认真读题,认真读样例,完全搞懂样例。

  • 考前复习好模板,最好打一遍,不要出现会的模板打挂这种白送的事。

  • 思路要清晰,不能出现打一个代码与暴力对拍,拍出来一个错,打一个补丁,接着又能拍出来,又打一个补丁,直到放弃。(指 Day1 T2,不过好在最后调出来了)

  • 需要在概率与期望上深入学习。

不过其实在 Day2 发挥的还是挺好的,弱项的大模拟居然能写出来 4 题。

感觉这次因为 Day2 的缘故涨了一些信心。

不要对自己没有信心,在意识到自己一些地方薄弱的情况下,也要发现自己的长处。

8. 题外话

  • D1T1 的倒霉事:首先读错题了,然后按照读错的理解模拟样例还算错数了,结果正好对上了,然后按照自己理解瞎写了一份代码。写错了一个地方,却凑巧样例还对了,交上去还得了 15 分。赛后改题,去 infOJ 交,调了几个 bug 后还只能得 10 分,与 xuanxuan001 的正解对拍死活拍不出来。尝试修改对拍的造数据程序(造出来的数据不符合题意),结果一下就拍出来了。在 infOJ 上 assert 了一下发现那里的数据也有这个问题。 upd: 数据修好了,改之后 40 分了。

9. upd

  • D2T4 的代码完全是错的,因为完全理解错题意了。可是因为 pretest 数据太水了,就直接过了 pretest。在 infOJ 上 25 分。
posted @   lotus_f  阅读(1028)  评论(1编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示