@游记@ CSP2019


@day -??@

和 yhn 学长在校外偶遇。

聊了一些。他说现在初中的信竞表现得不够好,我们这一届恐怕是学校最后一届带着荣光的信竞团队了。
的确啊。学校经验丰富的教练已经带了好多届,甚至快到退休的年龄了。甚至教练自己的孩子都已经高三了。
这种情况下,初中的学生只有新教练带。恐怕也不见得会很快成长起来吧。

学校一直在搞的五个竞赛,现在只有信竞还足够突出,其他竞赛都被其他学校直接垄断了啊。。。

他还说,我们这一届是教练可能能够带出国家集训队的最后一届了。
或许是出于某种共鸣吧。对这句话感触很多。
责任感。。。究竟是好还是坏呢。责任感会化为压力,也会带来动力。
而究竟是哪种,恐怕更多地还是决定于当事人的心态吧。

@day -1@

MD 我怎么又颓废了一天啊啊啊啊啊啊。

@day 0@

上午非常痛苦地写完了 ZJOI2019 的 minimax 搜索。

为什么去年考了 ddp 今年我们教练就让我在考前练 ddp 啊啊啊啊啊啊。

下午去试机,尝试打树套树结果没打出来。
有退役的感觉了。

想去和 qn 大佬面基结果走到一半就被教练叫过去,然后被强制送回去家 qaq。

晚上回家很早就睡了。想说高中第一场还是准备得充足些。

@day 1@

满怀紧张感地进入考场。

今年的密码竟然是通过教师端发下来的,“节约时间” 的拼音然后进行奇怪的变形(记不清楚了,应该是这样的)抱歉应该是“认真思考”的拼音(中老年选手记忆力不大行)。
挺好的,监考老师们总算掌握了高科技。
话说我发现压缩包可以在不解压的情况看到它内部的文件名字,于是在开考前没事儿建了几个 cpp 文件缓解压力。

可能是因为去年考得比较好,今年的压力感格外大吧(虽然考下来的结果的确没有去年好)。

看了一眼,感觉题面都比去年长,而且从第二题开始就直接上树了。心里有点儿担心。

第一题格雷码,手算了一下感觉可以从最高位开始往后逐一确定,写了 5 分钟把大样例过了。

第二题括号树。直觉可以通过计算根到每个点的后缀中有多少合法括号序列,然后累加。
想了想感觉可以线段树二分,但是看到出题人分了 10^5 与 5*10^5 两个部分分有点慌,怕卡 O(nlogn)。
想了一会儿并没有想出来 O(n) 怎么做,离预估的做 T2 的时间也不多了,写了一个 O(nlogn) 过了大样例。

此时过去了 1h,感觉和去年的状态挺吻合的。

然后就来到了 D1T3。
根据直觉随意想了个算法,想想想写写写然后自闭了。
基本上 2h 都用来写程序 + 看样例过没有 + 为什么没过 + 小补丁。
最后的结果是只过了小样例而并没有过大样例。还是决定分部分分的类型写暴力(事实证明这个决定比较正确)。

最后剩下半小时就尝试刚 T2 的 O(n) 做法 + 检查细节。
但是因为 T3 搞得太疲倦了,也没把 T2 刚出来。

出来就觉得自己要退役了。听他们说 T2 有 O(n) 做法,还特别简单。当时就特别慌,怕 log 算法会被卡。
D1T3 好像都写的是 10 分的暴力,甚至很少听到有人写链状的特殊数据。

然后下午和 qn 大佬线下聊了一会儿,他好像 D1T2 没有写然后爆零了,感觉挺惨的 QAQ。
最后统一意见,觉得还是 D1T2 有区分度。D1T3 貌似被 luogu 标成了黑题。

晚上搞了《祈风》来玩,感觉好玩的。能够看到早苗真好。
据说群里有人再说 “明天要是再有树题我就去吃电脑屏幕!”,也不知道那位兄弟现在怎么样了 2333。

@day 2@

早上一直在想今天能够翻盘就好了。
但是根据我在颓废时看的那么多游记,翻盘的可能性也挺低的。最好的方法还是不让 day1 的心情影响 day2。
平常心。

门口被教练拦住,大概询问了一下昨天的做题情况。
教练觉得我昨天的状态不够好。“你看某人对拍对了 1h。你怎么不写一个对拍呢(然而那个对拍了 1h 的人最后 RE 了)。”
“都说了什么都有可能发生,注意考试策略啊。”
感觉自己也无话可说。day2 还是选择稳一点的打法吧。

依然像昨天那样打开压缩包先看题目名字(发现有个单词我不会)
密码发出来,貌似记得是 “注意细节” 的拼音?记不是很清楚了。

然后开始通看一遍题目(突然发现题目首部有一个 ∑ 的定义还没有用到?感觉要回收这个 flag 了)。
T1 组合计数,T2 看起来是个很套路的最优性问题,T3 是关于重心的题,感觉比较经典。
感觉自己今天如果加把劲说不定可以 AK(都是比较适合自己的题目)。但是想到昨天的教训,还是收敛一点。
话说T1暗示出题人觉得选手很菜。

T1 显然可以容斥,算了一下复杂度感觉 O(n^2m) 像正确的复杂度。
写了一下发现容斥外部的复杂度是 O(m) 的,内部可能需要一个 O(n^2),但我好像暂时只想到 O(n^3) 的 dp。

看到模数 998244353,尝试写了个生成函数(既然day1都那样了,我d2t1考fft有什么问题)
然后就发现自己脑子傻了:不需要同时存总个数与容斥的菜的个数,只需要存容斥的菜的个数 - 不容斥的菜的个数。

然后就写完了,看了一下过去半小时,感觉和去年的状态又莫名吻合了。

T2 可以直接得到 O(n^3) 的 dp:记 dp[i][j] 表示上一个划分段为 [i, j] 的最优答案,枚举下一个 [j+1, k] 进行转移。
然后发现假如代价函数是任意的,这个算法是一个时间复杂度下限。
所以代价函数定义为区间和的平方,肯定是有单调性所在,可以优化掉。

手推了一下单调性感觉假如右端点固定,左端点越往右越优,且越方便转移。打了个表发现果然如此。
那么我就可以将状态缩减成一维状态 dp[x] 了。

是否合法性也是单调的呢?如果是单调的我就可以直接 two-points 了。继续打了个表发现并不是这样的。
那 O(n) 算法是怎么来的呢。想了想也只有单调队列了,手推了一下果然可以单调队列。然后就写了一个 O(n) 算法。

然后测第 3 个大样例的时候猛然发现它要高精度。
刚刚是不是发下来一个补充说明啊?打开一看,发现 T2 除了最后 3 个点都保证答案在 long long 范围以内。
那好吧。果断把数组大小调小(因为怕 MLE),直接干 T3(所以最后发现 day1 还是有影响到 day2 —— D2T2 因为求稳并没有写高精度)。
此时时间过去了一个小时半,剩下 2h 感觉搞 T3 时间还比较充裕。

好吧我收回刚刚那句话。T3 想了大概半小时,感觉会做断掉父亲的边后剩下来一棵子树的情况。
因为 d1t3 的心理阴影太深,所以没敢继续往下想。而且暴力分挺足的,直接开始写暴力。

把 75 分暴力写完过后发现还有 45min 左右。有点茫然,不知道是先写 T2 的高精度还是先想 T3。
算了一下 T2 如果把 dp 状态存成高精度的话,空间好像有点危险。用教练在考前教的 size.exe 测静态空间又发现跟算的不一样。茫然了,于是决定先想 T3。
结果 T3 把自己的乱搞写到一半就发现还剩 15min 了,心想也写不完了,直接开始检查细节。

最后 15min 一直在想 day2 求稳的策略到底是对的还是错的。
感觉这样考下来,即使是去年的我依然也能达到这个大众分吧。
真是的,学了一年都干了什么啊。

考下来发现我们学校同届信竞没人同时写 T1 和 T2 的正解。听说 wk 大爷把 T3 切了,他 day2 好像有 100 + 88 + 100。
听说 lhc 大佬也把 T3 切了,但是他好像是先做的 T3 再做的 T2,所以没有切 T2。
在某群友交里看了一圈,发现我 day2 的分数可能是标准的大众分。day1 也不知道 T3 能不能多骗点分,T2 能不能 O(nlogn) 卡过去。
感觉今年状态远没有去年好啊。于是又开始担心我的省选会怎样(省选还要部分参考这个分数)。

下午发现这周末晚上才回学校,于是整个下午继续推《祈风》,终于在返校前把它推完了。
啊啊,只有看看早苗才能勉强稳定住我的情绪。。。

晚上回学校,开始了文化课之旅。终于想起来一句话:
“当初欠的迟早是要还的。”

@day ??@

高一文化课好多啊,9 门学科同时要补。而且几乎没有自习。
“9 年不挂科,一挂挂 9 科。”

在各种抗拒下还是在 luogu 上测试了一下。
day1 竟然没有卡我 T2 的 O(nlogn) 算法,很开心;然而 T3 只有 10 分。day2 和预估的一样。
总分 210 + 263 = 473,混了两天的大众分。同时还创造了day2比day1分数高的历史
牛客上成绩一样。

希望官方数据会让我 d1t3 多骗几分吧。
算了,还是希望就这个分数不变吧。

@day ??+1@

看了 d1t3 的题解,发现自己一开始 15 分钟的思路是对的。
结果后面 1h 就把那个思路叉掉了。。。

心里莫名难受。但想想还是自己技不如人而已吧。

原文地址:https://www.cnblogs.com/Tiw-Air-OAO/p/11862600.html