2022WC比赛总结反思

Time:2021.1.27 8:30~13:30

比赛前想着把 WC 当成省选来打,目标理所当然是那块熠熠生辉的金牌。

开赛。顺序看了眼三题,发现 T3 是形式较为新颖的交互题,于是看完题后打算先做前两题。

然而 T1 思考许久毫无思路,便转战 T2。发现暴力是 \(O(nm\log m)\) 的,想了个归并排序做法优化到 \(O(nm)\),随后注意到可以将询问离线,便用莫队+线段树做到了 \(O(n\sqrt m\log n)\),发现线段树可以用 set 替代,复杂度没变但是好写了许多。最后,注意到一个性质:本题中莫队插入是 \(O(\log n)\) 的,但是删除是 \(O(1)\) 的,于是想到可以用回滚莫队代替普通莫队,初始时暴力构造,一算,复杂度降到了 \(O(n\sqrt{m\log n})\)

至此,我便以为此题结束了。一方面是因为我用计算器算了下大概要跑 \(3s\) 多,另一方面是 ccf 后来补发的大样例我调了下块长最后只跑了 \(4.5s\)(时限 \(5s\))。然而这也就成为了本场比赛中最大的遗憾。

大概两小时过去了,我还有较为充分的时间做另两题。出于想把 T3 暴力打完再仔细思考 T1 的想法,我去看了看 T3。不一会儿我发现题目中的猜数游戏以前有粗浅接触过,据说存在情况使得最多猜测次数为 \(7\) 次,然而题目只给了 \(5\) 次猜测限制,再加上交互库并不是自适应的,于是考虑从期望分析本题做法。

出于好奇,我想试试暴力按题目中的条件判能有几分,写完后发现有大概 \(50\) 分,加了个随机化后稳定在 \(65\) 分左右。之后又仔细思考了一段时间并没有想到更优的做法,随后便把这题先放一旁。这大概是本次比赛的第二大遗憾吧。

在这期间,也有一些小插曲。先是本机 cmd 不能编译下发交互库中的 grader 文件,热心的 yc 学长帮我解决了这个问题,后来由于电脑版本还是 c++ 的原因,编译出来的 exe 又无法运行,最后,是黄老师让我换了台电脑,问题才得以彻底解决。

最后看第一题,想了一会儿发现 \(10\) 分暴力不好打,但是 \(25\) 分特殊性质很好打,于是很快就打好了 \(25\) 分。大约还有 \(40\) 分钟,那时感觉 T2,T3 应该也做到极致了,毕竟 T2 写了个暴力对拍拍出了一些错,修改完后就拍上了,T3 自以为再往下做性价比不高。然而最后竟是写了 \(30\) 多分钟 T1 暴力还没写完,于是就只交了原来的 \(25\) 分程序。比赛到此结束。

出场时估分为 \(25+100+65=190\)。问了下 Linshey 和 c03,分别估分为 \(25+100+85=210\)\(25+40+95=160\),感觉金应该很有希望。然而交流完发现 Linshey T2 的复杂度为 \(O(n\sqrt m)\),比我还少了个 \(\sqrt{\log n}\)!但他说他满数据要跑 \(8s\) 左右,我大受震撼,随后察觉到了事情的不对劲。一看 ccf 的大样例,数据范围只有 \(10^5\),而最大数据范围为 \(5\times10^5\),重新把数值再代入复杂度一算,算出来竟不是 \(3s\) 多,而是 \(15s\) 多。此刻,我心头一震,脑中一篇空白,堆满失望,知道 Au 已变得十分困难。

而另一个遗憾就是 T3 还有一个很显然的判断我没加,后来一加发现分数升到了 \(80\) 多。

最后的最后,分数出来了,\(10+55+63=128\),比 Linshey(\(192\)) 和 c03(\(146\)) 都低了许多,也远低于我的预期分数。尽管心中充满了沮丧,失落与不甘,但既已成事实,就不得不接受它,面对它。暗暗庆幸这次 WC 并不是真正的省选之余,也敲响了一声警钟,是时候要做出一些改变了。

失误总结:

1.T2 核心部分想到了,但由于计算程序运行时间算错和没注意到 ccf 的大样例不是满数据,便没写出最优的程序。后来发现只要把初始时的暴力构造也倒着构造就好了。

2.T3 一个显然的判断没加,少了 \(20\) 分。

3.赛时不太会用 cmd 编译交互库,现在会用了。

黎明的那道光 会越过黑暗 打破一切恐惧我能 找到答案。

posted @ 2022-03-30 09:54  18Michael  阅读(154)  评论(0编辑  收藏  举报