北大集训2019 游记

赶在2019年最后一天补了这篇游记。

Day -1

跟dcx坐飞机到了北京,不知道第几次到首都国际机场了,不过听说南航要搬到大兴机场,所以可能是最后一次到这了?
当地一个家长来接机,带我们去日料店,不过我们热情不太高,选择了一些主食(我是拉面)。
酒店还是熟悉的中关新园9号楼。怎么说呢?那个楼层有一股旧时招待所的气息,不过房间倒是还好,住起来舒服。
稍微安顿下来,看看b站就睡了。

Day 0

晚上睡得一般般,不过确是这次睡得最好的一天了。
早上意外发现北京昨晚下了雪,起床之后还有小雪,对南方人来说是见不到的美景。略带兴奋地跟dcx在外面闲逛,顺便去报到了。街上随处可见积雪,鞋子踩在雪地上陷了进去,意外得带感。
中午换到了1号楼,看起来楼层和房间漂亮了很多,唯一不太满意的是暖气没法调温度(不会关暖气)。
下午的试机用的是去年的两个签到题以及一个去年试机的交互,写了写跑路了。
晚上本来想写点题,最后咕掉了,继续颓b站。

Day 1

晚上睡得不太好,暖气很闷热,大概睡了5小时。
早上起来涂了点风油精,吃了很少的早餐上场了。
因为是第一场,稍微有点兴奋,过了一会才冷静下来看题。
稍微审了一下题。T1是个树上计数,看到 n ≤ 80 n\leq 80 n80感觉并不会太难,T2是个奇怪的字符串,T3看起来有点怪。
感觉T1比较签到,想了一下容斥就会了,没认真算复杂度,不过是个多项式算法应该都能过?
感觉对字符串比较有信心,于是没有急着写T1,去认真想了一下T2。感觉有点像SAM+LCT,再感觉一下过于不能写,顿时思路卡住了。认真思考一下,这题要求最大值最小,显然的做法是先二分一个答案,然后每次贪心扩展最长的距离,这一步是瓶颈。不知怎么想到一个模拟赛见过的trick,就是先倍增再二分,于是只需要 O ( l e n ) \mathcal O(len) O(len)用SAM计算一个区间的权值即可做到 O ( n log ⁡ 2 n ) \mathcal O(n\log^2 n) O(nlog2n),看起来很正确。
花了点时间码了T1的容斥背包DP,9点左右交上去过了,旁边的老哥不知道发生了什么,一直在莫名TLE。然后开始写T2,考虑了一下,发现如果写出了 O ( l e n ) O(len) O(len)算区间权值的代码,改一下就是正解了,于是先码了个暴力,写的时候稍微有点慌,不过还是很快调出来了。然后改了个二分,自信一交,喜提60, n = 5 ∗ 1 0 4 n=5*10^4 n=5104的点8s没跑出来,于是开始卡常大战。
本机造了一下随机数据发现要跑13s,加了些优化卡进了8s,交上去还是TLE。感觉有点奇怪,造了一下 k k k小的数据,发现 k = 1 k=1 k=1要跑30s,于是又加了一堆剪枝还是TLE。交了个测试代码,发现 k > 1 k>1 k>1的时候没有TLE,于是特判了 k = 1 k=1 k=1勉强卡了过去,心态有点崩。
还剩1.5h给T3,脑子有点昏,于是开始边写部分分边推性质,大概写了几个subtask转化出了最后的模型。冷静了一下需要一般图匹配,不过直接做是 O ( n 4 ) \mathcal O(n^4) O(n4)的,这时候可能脑子已经很混乱了,在门外冷静了很久才发现退匹配可以优化到 O ( n 3 ) \mathcal O(n^3) O(n3)。看了下时间还剩15min,于是对着屏幕开始发呆。
Day1总分 100 + 100 + 28 = 228 100+100+28=228 100+100+28=228,感觉海星。出来水了水群发现居然是当日rk1,非常开心,沙雕群友开始狂奶我。
下午跟dcx还有wqy逛了逛PKU,虽然去年逛过一遍还是感觉很漂亮,并且好冷。
晚上继续看b站,群友的毒奶生效了,心态不是很稳,开始想一些奇奇怪怪的事情。

Day 2

晚上睡得不太好,暖气很闷热,大概睡了3小时。
早上起来头有点痛,撑着进了考场。
审完三个题,感觉难度很微妙。
T1是个简单的二项式反演,飞快码完过了。T2感觉有点难,跳过了先看T3,是个树上期望题,推了下式子,码了一会也过了。
这时候不到9点半,只剩T2,感觉我稳了。
后来才想到,可能也是这个时刻,我的北大集训和OI生涯就结束了吧。
T2的矩阵以及唯一解很恶心,思路完全飘到了线代上面(虽然看到非负整数解就觉得不靠谱极了)。就这样想来想去想到了快11点,挣扎一下尝试了 n ≤ 5 n\leq 5 n5的乱搞,结果大失败。
看到周围选手陆陆续续离场,我越来越着急,反而更想不出东西。最后15min抛弃了线代,建了个行列模型才总算反应过来这是个匹配问题,然后就没了。
Day2总分 100 + 0 + 100 = 200 100+0+100=200 100+0+100=200,由于AK了超过20个人,排名往下跌到了rk10,但是沙雕群友还在奶我稳了。
晚上整个人很焦虑,一个人去去年吃过的餐厅吃了很多东西。

Day 3

晚上睡得非常不好,暖气很闷热,大概睡了1小时。
早上起来喝了几杯咖啡,但是头还是痛到无法思考。
Day3总分 0 + 0 + 0 = 0 0+0+0=0 0+0+0=0
比赛过程没啥能说的。 0 0 0分真的不是在演,因为头痛到没法写题,写不出一行代码。
其实算是必然了,三天总共睡了不到10小时,不崩溃是不可能的。
最后一个小时没回场,溜到一条没人的走廊坐着。虽然想不了题,但是意识异常清晰地告诉我:结束了,OI结束了。
很想哭,但是没哭出来。拿走东西,跟妈妈打了个电话,就回酒店了。
头很痛,但是睡不着。下午觉得发烧了,还特地请当地家长送了个药,测了下勉强没有发烧。
排名不能看了,分差大到没救,终于没人奶了。
晚上继续思考退役后的打算,跟cjb打了个电话,稍微聊了下。
其实很意外的,我不怎么想着后面翻盘的事了,接近认命了。可能真的是太累了吧,最想做的是回广州好好睡一觉,比赛的事像一场噩梦,很不真实。

Day 4

晚上睡得稍微好了一点,至少头不太痛了,维持住了基本的代码能力,不过可能并没有思考的能力了,完全退化成了一名实际水平提高组的暴力选手。
审了下题其实就感觉走远了,T2的贝叶斯公式和T3的贪心都需要思考,但我什么都不行。
先花了点时间敲掉了T1的数位DP+插值。然后开始陷入自闭,几乎放弃了思考T3正解,看到71分的费用流就丢掉了,回来主攻T2,但是完全想不出多项式算法。
我先花了1h重新理解了贝叶斯公式,再花了1h搞出了一个爆搜,成功搜出了 n ≤ 10 n\leq 10 n10的点。然后回来敲了个T3的优化费用流,想起了之前学过的一个trick,搞出了一个 O ( n ) \mathcal O(n) O(n)个点和 O ( n ) \mathcal O(n) O(n)条边的奇妙构图。
这时候评测系统炸了,于是考试改成OI赛制延了1h,不过我没用上。旁边的选手又陆续离场了,我则是平静思考退役生活。本机测了一下T3的费用流只跑0.8s,于是没去优化了。最后几分钟评测系统修好了,交上去发现 n ≤ 5000 n\leq 5000 n5000的点TLE了,于是得分从一个一般到不能再一般的大众分变成了一个垫底分数。
Day4总分 100 + 35 + 34 = 169 100+35+34=169 100+35+34=169,出来问了一下dcx,T2当 n > 10 n>10 n>10的时候答案是 0 0 0。。。因为我的爆搜过于垃圾(虽然可以优化),于是并没有试着去跑 n = 11 n=11 n=11。。。T3的费用流直接用边数 O ( n log ⁡ n ) \mathcal O(n\log n) O(nlogn)的线段树优化建图就能跑过去了。感觉其实距离他的 100 + 100 + 71 = 271 100+100+71=271 100+100+71=271并没有太大差距,可惜没有如果了。
晚上去跟来THUWC的同学们以及THU的学长吃了顿饭,顺便完成了之前的flag,帮同学们搞了个模拟面试,算是能给他们做的最后帮助了。

Day 5

dcx先回广州了。我跟wqy换了个酒店,准备打晚上的bytedance网络预选赛。
说是三人的ACM赛制,因为dcx咕了,wqy瞎打划水,最后几乎变成我的单挑。
最后B抄了个板子,带权二分写挂了没过,不过还是拿到了rk8,完成了进前10(去年可以免费)的目标(虽然因为今年取消了免费名额所以并没卵用)。
客观来说表现比后面两天的北大集训好太多了,可能真的只是因为睡多了点,脑子清醒了。

Day 6

回广州了。


用一种不太光彩甚至有些滑稽的方式结束了自己的OI生涯(其实还有一个走过场的WC,分差大到翻盘概率低于国足进世界杯的概率)。严格来说还有一个赛季,但是基本上就是划水了。
其实从去年底开始就处于精神状态很不好的状态了,心理医生也看了好几次,都没办法解决。长期在竞赛的高压下挣扎,每次大考前都过分紧张,导致这一年过得堪称痛苦。失眠的问题从半年前就开始出现了,在这次考试中爆发,某种程度上也算意料之中吧。况且Day1拿了个单日rk1,也算是圆了一直以来的梦想,不需要证明什么了。
这么安慰一下自己,意外地还很有说服力。
只是,果然难过的事还是会令人难过啊。半年来每天坚持10h的训练,一天保底一套题,有时甚至两三套,刷题量达到了历史峰值,我可以自信地说这是我学OI以来训练量最大的时期了,却迎来了这样的结局。
想哭,哭不出来啊。
幸运,抑或不幸?


回到广州之后自闭了几天,每天浑浑噩噩,最近稍微好了一些,才把游记补出来。
下一篇游记大概是WC了,估计也会跟着更退役记,更多要说的到时候再说吧。

你可能感兴趣的:(游记,杂文)