武汉邀请赛打铁感言
前情提要
在高一停课训练了半年,没有出什么成绩,遗憾退役后,我就想着大学里能去圆一下名为算法竞赛的梦,拿个 EC 金什么的。文化课的生活和 OI 是两个不同的世界,在算竞的线程里,时间直接来到了高考后的暑假。首先是一个不那么好的消息,要去兰州大学了,那并不是一个强校;然后是一个好消息,要去兰州大学了,拿名额应该会比强方便得多。
不知为什么,在高三的最后时间里,我的思维进入了一种迟钝麻木的状态,集中不了一点注意力,学不进一点东西,这种状态一直持续到了暑假,导致暑假里的康复训练和其它一些想学的东西(编程原神/doge)都收效甚微,事实上,在我停课的后期也差不多。(当然,这并不能怪我的高中,事实上,我校的放假时间和体育锻炼时间都位居全国前列,我对此感到骄傲 /cy)然后就开学,认识新的队友,打些新的训练,想些新的幻想。
说实话,把大一上看作康复训练,效果倒是不错的,在学期末,我迎来了最好的状态,曾一天 6 个 2600,也达成了 2256 的 max rating,离我当年期待的 IM 只有一步之遥。只遗憾的是在杭州站当了战犯,秒会了 F 却区间分讨漏了一种情况,无缘 ECF;昆明站签到题不会做,打铜了;郑州卡了点题心态爆炸,铁了(咋全是遗憾)。有统计说 XCPC 获奖的波动是很大的,除了做题能力还需要点其它东西,这样看来,我确实是一个只有铜牌水平的选手。
然后寒假到下学期玩了些其它东西,训练越来越少了,上学期末日平均通过大概有 \(2.6\),到武汉之前就只有 \(0.6\) 了。
打铁
一开始是没有意识到那个所谓的背包实际上小的一定是能填满大的留下的空格的,后来通过另一条路意识到这个以后没有转回来,而搞了些奇奇怪怪的东西。接着瞪了两个多小时,没有看出一个 \(10^9\) 级别的 \(a\) 加起来后是 \(10^{14}\) 级别的,和一个取模之后的数一乘就爆 long long 了。
感觉一直以来,我的做题和调试都是猜测式的,虽然我猜了什么东西还是会去想证明的。比如看到那个背包本能地就觉得不能直接往里贪,就跳过了这个想法,没有想想在这个题目里问题出在哪里,什么导致做不了,怎么改进,即没有充分地搜索一个思路,而是在各个思路之间随机跳跃,还会多次重复想一个思路,效率很低,又极其容易忽略一些事情。调题也是一样的,有没有一些靠谱点的方案去调试呢,我应该把要检查的分成几个部分,在平时的训练中就要细致地去依次检查,不能只是一遍一遍读代码或者对拍后再模拟。
拿这次来说,溢出是一个常见的问题,特别是在这样一个涉及取模的题目里。上次在郑州也是,一个溢出查老半天。查有没有可能爆 long long 应该是可以有靠谱点的做法的,首先写的时候就应该考虑各个量的范围,这是选手最基本的素养。当然人都会犯错,不能没有兜底措施。溢出的检查可以是在代码里对范围每个量的范围进行标注,再加上开 sanitizer 测极限数据,这样几乎一定可以解决问题了。
大模型可以做成推理模型,利于自注意力的展开。在训练的过程中感觉人类其实也有类似的性质,很多时候我想不到做法,把现在的性质,哪怕是很显然的东西列一遍,看一看,就能找到新的想法。应该要充分地利用这样辅助手段帮忙。做题的时候要充分地展开现在的想法能做的,一点点往前推进,查代码也要积极使用辅助机制理解问题,比如写下一段可能遇到的情况,看是不是漏了一种(杭州 F /fn)看大小会不会炸(郑州 F /fn 武汉邀请 F /fn)。
更进一步的是,要严肃地有组织的训练,一段时间内,热情还很足的时候可能问题不大,但训练久了,打算法竞赛终究是累的,见到些其它好玩的东西就跑了,没法到达一个深入的地方。我现在想的是,把 AtCoder for Chinese 的假比赛功能用起来,每天尽量是有四个小时连续时间可以多个难度地做点题,再辅以博客及时的做题比赛复盘,每周 vp 什么的。原来的大训练记录现在以周为单位分开吧。
还有半年打区域赛,希望能拿到一枚金牌。

浙公网安备 33010602011771号