Day 1
考前感觉比较懈怠,精神不太集中。尤其是周五和周六上午,实际上都在划水 。
不过说实话,考前打球还是很爽的。
网上监考看起来很严格,入场之后比较紧张。一直紧张了 30min,紧张到了比赛开始。
开场当然是遍历题目,开题顺序是 231。不要问,问就是 T1 题面不知道为啥转了半天。
感觉就是:
-
T1 是一个常规的期望 DP。再看一眼这个 \(m\) 很小,猜都猜得到是列主元解方程之类的解法。
-
T2 是数据结构题目。虽然题目给出了很多限制,不过感觉还是不会......
-
T3 一看就不会 。
那么就先开 T1 吧!直接列了 DP 式子:\(f_{i,j}\) 表示最大值为 \(i\),分数差值为 \(j\) 的期望。思考了几分钟之后,发现 \(f_{i,j}\) 可以按照 \(i\) 分层,不同层之间不存在环状转移,而同层则至多只需要 \(m\) 个变量即可表示,还可以生成变元个数个方程,直接解就完事了。
肯定能过!那就赶紧写吧!......实际上写得磨磨蹭蹭的,写到 1 h 30 min 才调完。虽然名义上是,为了提高准确度而写得比较“细”,实际上还是调了半天。
交了之后:成功过了前两个包,而后面 TLE 了。出去上个洗手间冷静了一下,发现自己复杂度写假了。(喝水)当时血压直接就上来了。幸好修锅比较快,上完大概就知道怎么修了哈哈,洗手间果然是块宝地。
花了另外 30 min 修锅,交了之后:成功过了前三个包。
艹,现在进入了我最讨厌的卡常环节,又不得不直面我的常数了 。
天哪!但它只是 D1T1 啊!为什么要这样对待 D1T1,又为什么要这样对待做 D1T1 的选手!!!
冷静了一下,略略卡卡常之后先放了 T1,转而进入 T2。T1 的不顺对心态影响比较大(觉得大家肯定都过了),导致做 T2 的时候比较焦躁,扫了一眼部分分之后就开始写暴力。写的时候,题目要求一直在脑海中回响:
设线段长度之和为 \(S\),则你的输出和标准答案的误差不应超过 \(10^{-10}\max\{|S|,1\}\)。
然而,这和我实际的想法可能不太一样:
题面:设线段长度之和为 \(S\);
想法:这句话没啥用。
题面:则你的输出和标准答案的误差不应超过 \(10^{-10}\max\{|S|,1\}\);
想法:woc,\(10^{-10}\),这道题肯定卡精度!!!!
所以我直接忽略了 \(\max\{|S|,1\}\) 的系数,并且在脑海中根植了“卡精度”的错误认知。这导致,我第一轮写完暴力的时候,明明写错了一个地方,交上去也自然得到了 WA
的反馈,心里却觉得:“天哪,这道题居然暴力都会卡人的精度,肯定不可做!”最后并没有检查思路或代码实际存在的问题,而是坚信“出题人太坏了”,直接弃掉了 T2,然后白白丢掉了送到手上的 18pts!
仍然不准备卡 T1 的常数,转而进入 T3。再阅读一遍题目,疑似可以二分。二分完了之后,把判定式子写一下,发现就是网络流的形式。那好,先写个网络流暴力保个底吧。
写的时候突然想起来:“我是不是学过一个最大流对偶最小割、再直接枚举割集的技巧?”拿出来套了一下发现确实可以用。那好,这下判定都不用写网络流了,直接处理一下系数算就好了。
“哈哈,这个 T3 这么 easy,又白拿 100pts!”交了之后:
零分?!?!?!?!?!!!#!%(&*)&&%)&!)*……%(*……
血压又飙上来了。迅速回头扫描代码,没什么写错的;再回头检查一遍思路,确实也没有什么问题。
好家伙,居然一场比赛里面放两道卡精度的题目,出题人实在是太恶心人了。转念一想,我这个 T3 明明是对的,一分都没有,太亏了吧!又开始补救 T3 的精度,尝试了各种方法:开 long double
,简化计算流程,去掉二分......总共交了 9 发,最终分数也仅仅定格在了 22pts。
唉,虽然不如意,也只能接受了。最后 30min,突然想起来我还有一个 T1 还要卡常。果然是不到残血不会玩,使劲浑身解数,总算是把最后一个包给卡过去了。松了一口气,至少有一个大家都过了的 T1 保底了。
最后 15min 还是耗费在了 T3 上面,仍然是一点进展都没有。最终,遗憾离场。
总的感觉就是:题目或许不难,但是体验感极差。
晚上洗澡才发现 T2 是真的写出问题了,可能并不是出题人卡精度。懊悔。
Day 2
前一天晚上看电视,当天早上一觉睡到很晚才起床。
可能不能算是适合下午考试的准备,不过确实是很休闲就对了。
下午开题顺序总算是正常的 123 了。
感觉是:
- T1 是期望题,实际上是计数题。感觉比较对我的胃口,加油 !
- T2 是树上统计题,我猜应该不会很过分......吧......
- T3,谔谔,牌迟但到。今年好歹拿几分吧。
那么自然是先开 T1。不对呀,这个 T1 怎么这么离谱?比我想象中难多了!1 h 过去了,除了最低档的暴力居然其它的包一个都过?不?了?
周围的人都开始积极敲键盘了,T1 真的有这么简单?实在是忍不住了,我颤抖着打开了 T2,准备先捡个软柿子捏捏,把 T2 的暴力先敲了。
不好啊!!!这个 T2 的暴力怎么都不好写???紧张到甚至没有办法认真思考了,我只能先写一个 \(O(n^4)\) 的暴力垫个最低档的分。明明 \(O(n^3)\) 都可以过去,却没有勇气去尝试;明明 \(O(n^2)\) 甚至带 \(\log\) 都不复杂,却没有胆量去写一写。可能是没法承受 WA 或者 TLE,也不敢再随便浪费时间了。
接下来就是在 123 之间反复横跳,T2 愣是不会做,T3 愣是没胆量写。搞半天,又浪费了 30 min,回到了 T1。
出去上洗手间冷静了一下,突然想起来 T1 有一个完全没有尝试过的思考方向。进行了一点草稿纸演算,发现确实很有前途。下手写了个暴力,看起来也是对的。这下不就总算解决 T1 啦?
幸好没有直接开始写所谓 “T1 正解”,几分钟之后我就发现它直接退化成了暴力复杂度。不仅补救无果,现在还只剩下了 1 h 30 min,我却只有 15 pts?
受不了了!!!!该死的 T1!!!!我终于下定决心开 T3。心中着实忐忑,牌题的实现难度着实不容小觑。幸好此时脑子糊涂,手还算清醒,花了 40 min,多少拿到了 25pts。之后的 TLE 看起来是搜索不能触及的了,更何况我常数本来就大 。
下面,T1 和 T2 选一个,那我肯定选 T1 啊,T2 根本没有思路。最棘手的部分是带系数平方和,而计算方式限制了我根本不可能在 DP 过程中处理“平方”结构。
稍等,虽然我不能 DP,但是我是不是可以直接枚举拆分方案?这是什么???这是不是整数拆分????????????!!!!!!!!!!!
当我在倒数 15 min 意识到这一点的时候,我就意识到,我终于解决了这恼人的 T1。然而,由于实在是太紧张了,当我在处理一个 \(\frac{m!}{(m-x)!}\)(其中 \(x\le n\))的系数时,我忘了这就是 \(m^{\underline x}\),而误以为这个必须用阶乘直接计算;或者,这个问题情景实在是过于迷惑。总之我就是没能处理出 \(m\) 比较大的情况,而遗憾地只能过掉前三个包,痛失 41pts 。
又是一天遗憾离场,唉。
晚上听评讲,一些重要的细节:
-
D1T1 jry 给出的做法很特别,把整个随机过程拆分成若干个易于处理的子过程。
而且,正解复杂度是 \(O(nm^2)\) 的!也就是,我的复杂度有问题,而不是常数大了!
-
D1T2 据 JZM 说是一个很常见的处理技巧:人为地构造一个处理顺序,然后处理。
更重要的是,我发现 D1T2 并不卡精度,一直都是我骗了我自己! -
D1T3 数据精度确实出了一点问题,并且我的做法是正确的。那么就有希望过掉!
-
D2T1 正解是 \(O(n^6)\) 的?40 的整数拆分这么小,那不随便踩?
-
D2T2 可以直接哈希?那确实是一个厉害的方法。
-
D2T3 居然可以直接 DP?不用搜索?看起来好厉害呀。
以及,居然搜索可以直接简单剪枝后过掉?