CSP 2019 游记
写在前面
老年选手再次来到神大观光旅游。
考前特地花了一天颓废打板子,手感还行,但思维似乎跟不上了。感觉不太妙。
11.16 (Day 1)
打开题面,发现是用 tuack 造的,简直好评。
看 T1,发现是傻逼题,于是随便写了个递归就扔了。
看 T2,读完题后会了 \(O(n \log n)\) 的线段树做法,但感觉 1s 跑 \(n \leq 5 \times 10^5\) 的数据有点悬,便又思考了一会儿。推出了一些性质后发现可以 \(O(n)\) 做,于是很快码完后直接过了所有样例,觉得很稳。
看 T3,读完题后有了一些奇异的构造性想法,码完之后发现已经写了近 3KB,结果一测样例发现做法有 bug。通过不断的调试与改进,最终我在 11:20 左右时得出结论:我的做法是假的。此时十分自闭。还剩最后二十分钟时,无奈只好打了暴搜。不过我之前的做法能处理链,于是我将其保留了下来。
于是估分 100+100+35=235,感觉结果不如去年好。
结果出考场发现 T3 得分普遍不高,心理稍微平衡了一些。
晚上在床上突然感觉我的做法似乎也能处理菊花图的数据,于是估分变成了 260,但希望不要挂掉。
11.17 (Day 2)
还没发密码时,点开三个题的样例文件夹,发现每个题都是四五个样例,感觉情况不对劲。
打开题面,发现 T1 就是计数,模数还是 \(998244353\)。感觉情况更加不对劲。
看完 T1,发现可以容斥,之后再做一个 \(O(n^3m)\) 的 dp 就有 84 分了。又想了一下,发现 dp 状态的其中两维可以做差合并成一维,复杂度就可以降到 \(O(n^2m)\)。很快码完后一遍过了所有样例,觉得很稳。
看 T2,读完题后只会 \(O(n^3)\) 的暴力 dp,一看分数只有 36 分,感觉情况相当不对劲。又仔细想了一会儿,推出了一些奇奇怪怪的性质,然后把 dp 的有用状态压了一下,发现可以跑 \(n \leq 5000\) 的数据。觉得 64 分稍微算说得过去,但对这道题仍耿耿于怀,于是准备先看 T3。
看完 T3,发现 75 分简直白给,于是花了半个小时左右码完部分分后测过了所有的样例。之后,又回过头去看 T2。
结果 T2 始终没有什么好的想法。
期间回头检查 T1 时造了组大数据,发现我被卡常了,用 Linux 一测发现极限数据跑了 1.02s,并且还相当稳定,吓得我赶快去了趟厕所然后回来卡常,在加入一些神奇的特判后,终于卡进了 0.9s。
于是估分 100+64+75=239。这样下来,不挂分的话两天的总分就应该是 499。希望最终会是这个结果。
12.1
炸穿。
Day1T3 居然只有 10 分,Day2T2 也挂了 4 分,于是总分只有 445 449(Day2T2 数据出锅了差点害了我)。
果然老了。
后记
这点分在全省竟然还能 rank 12 8,感觉怪怪的。
遗憾二三事:
- Day2T2 考场上推出的性质已经证明了决策单调性,不过却并没有再多想。
- Day2T3 不难,应该先开它的(虽然有点马后炮的感觉)。