狂砍之 J,狂骗之 S

· · 生活·游记

前奏

day -???

“上天给我一点 RP,上天给我一点 RP,上天给我一点 RP……”

day 1

早上神奇地发烧了,但是低烧。

肯定是拜得的 RP 起作用了,很快烧就退了。进入考场时脑子是清醒的(oh yeah)。

J 组

8:30{}^{[1]} 拿到解压密码 Trick||Treat!。CCF 为什么会把密码出成这么规整的单词呢?

考后才知道,因为当天是万圣节。

看 T1,是一道入门题。高高兴兴写 T1。

// T1 Code
string ans = "0000";
char seatid1, seatid2;
...判断:如果前三问都成立...
    if(abs(seatid1 - seatid2) == 1)
        ans[3] = '1';
...
cout <<ans <<endl;

高高兴兴测完样例。样例全对!(伏笔)

8:45 左右开始看 T2。显然只是略有加强的回文串模板题,思路上 AC 了(就是双指针+回文串相关模板)。但是严肃注意到代码会比较恶心,各种边界会天花乱坠。

不敢着急,慢慢写 T2。

可能是 9:10 左右,过掉了 T2 所有样例。

看 T3,一眼看出按位贪心。飞快地写完了。过掉所有样例。

看 T4。疯狂地发挥我思维的广度,思考十分钟无果。突然想到这题的操作过程本质就类似括号串匹配。又严肃推出一些性质。

然后就搞出 T4 了。

但是由于代码能力烂得一坨,导致许多加一减一和特判一开始根本没有考虑到。怎么办呢?经过二十分钟左右的痛苦调试,终于过掉了所有样例。

我愉快地记住,那时是 10:24。

我 T4 的做法用了 6 个数组(虽然实际上是正确的),这使我怀疑其正确性。于是写了一个对拍,拍了十几组 n=1000 的,又拍了几组 n=10 的,我终于相信我的 T4 是没有问题的。

或许是因为之前的模拟赛也有没 AC T1 的情况,或许是单纯地觉得 T1 的题目很有意思(?),我接着就开始测 T1。

或许是上天有意提醒我,我的手,敲下了这样一组数据并运行:

// travel.in
02 05D 02 05F
// travel.ans
1111
// travel.out
1110

Why, baby, why???

终于,我发现了 T1 的惊天大 bug!!!(伏笔照应)

于是迅速改回。

后来又测了 T2,T3,感觉没什么问题。

当保持安静的黄字配着庄重的黑底占满屏幕时,我满意地笑了。

或许能 AK!

但是真的能不能,谁知道呢?

a break

中午拥有 20 min 的 deep sleep。

下午精神饱满。

S 组

14:25 拿到解压密码 Oct31==Dec25。赛后经过对游记的大学习方知道其意义。

14:30 开始做 T1。通过想象画面法{}^{[2]},很快便找到了本题的双指针做法。

很快就写完了代码。

开 T2。注意到数据范围 n\le500,于是飞快胡出来,然后写代码。

胡乱地算了运算次数,竟然小于 10^8,赛后根据讨论可知肯定是算错了。幸好,即使是算对的复杂度也是不会超过 1s 的。

尝试做 T3。花 1.5h 胡了个假做法,还辛苦调试了很久,气煞我也。

最后 40 分钟,我开始奋起骗分!

O(n^3)$ 做法,$O(n^2)$ 做法,特殊性质 A,特殊性质 B……${}^{[3]}

如果所有的部分分和切掉的题都没有错的话,应该有 256 分。

希望 S 组能一等,希望 S 组能一等,希望 S 组能一等……

最终结算

J 组:[90, 100] + [80, 100] + [90, 100] + [70, 100] = [330, 400] = 肯定一等,有概率 AK。

S 组:[90, 100] + [70, 100] + [30, 56] = [190, 256] = 有点悬,一等或二等。

本文注释

$[2]$ 想象的画面是:一个柱状图,柱子在不断上升,直到齐平。作者非常喜欢在有关数列和加减的题目中想象一个变化的柱状图。 $[3]$ 这里骗的都是 T3 的分,T4 我连骗都没有骗,我还是太菜了……