晨起日升拂澄窗,折影映人透暖光。
Day 0
和 Air , ylz 一起擦窗户。那面窗户自出生以来从未如此洁净。
坐了两小时大巴,竟然没有晕车,可喜可贺。
和 zzy 分在一个房间。
晚上和 zzy 打算出去吃饭,看到 一群人 聚在酒店大厅里,Air 说外面没饭吃,wjx 说不许吃串串,但是有人发了美味的截图和位置,于是屏蔽 Air ,顺着位置去了一家火锅店。而 一群人 在酒店大厅里玩 uno。
这是我最浪费的一次,不仅没有吃完,还没有打包。我以为 zzy 可以吃完的,但他也以为我能吃完。
Day 1
早上 6:00 自然醒(应该吧?),7:56 打算去吃饭,8:27 回到房间,
10:03-11:12 睡觉,
11:56 点外卖,12:20-12:40 吃午饭。
13:00 出发,路上有人说
先尝试一个小时做T1,做出来后再尝试一个小时做T2,做出来直接摆烂。
做不出来尝试打暴力,打出来直接摆烂
T1做不出来再尝试用两个小时去做T1,做不出来直接摆烂。
那时没有人知道,这样摆烂可能拿不到一等。
到达后合影了。问 zwq 不会 KMP 怎么办,
用AC自动机。------me
似乎合影后被赶出去了,那么让我们采访一下第一位走出考场的大佬 Air !
好吧,没有真的被赶出去。我和 mxf 在一个考场,于是考场内只有二人。【其他人还在门(大门)外】
距离考试开始还有 一段时间 ,考场内只有 \(O(2)\) 个人,做一下心理建设。
距离考试开始还有 一些时间 ,考场内仅有 \(O(\frac{n}{2})\) 个人,想一下模板。
距离考试开始还有 一点时间 ,考场内才有 \(O(n-1)\) 个人,解压一下题,打开一下 D:\noi ------------?找不到?也许还没下发。
距离考试开始还有 -点时间 ,考场内已有 \(O(n)\) 个人,我的 noi 文件夹在哪里?什么?在 C: 里面?好好好。。。
Please wait while Setup is loading...
uppacking data: 71%
请支持 Dev-Cpp 5.11 TDM-GCC 4.9.2 Setup.exe。
设定编译器配置 Release -> Debug
工具T>编译选项C>编译时加入以下命令:
-std=c++14 -Wl,--stack=1234567890 -static
------终于,可以开始了。
Part I : crystal of lament(0~46min)
题面很简洁,不过是否太简单了?去年 club 也需要排列组合,这个 crystal 只有贪心?
考虑从下向上直接填补。哦,假了。
填补不一定从最低端开始,也可以是一段区间。
从上向下遍历将尽可能多的连续元素填平。似乎不是很好写?但这是T1,不写难道去写后面的?
于是写完了。
想到模拟赛中许多次因读题挂分,突然意识到元素排序的问题。样例都是升序,但题面...只字未提。
20min,又加了个 sort();
我好像会字符串操作(考前学的),不如写个手动格式化字符串,通过 system 批量高效检验样例。
40min,system参数要const char *?你怎么不去抢?
这无疑是失败的。
46min,手动测完了大样例,去看T2。
Part II : migrate by subway(46min~120min)
真是复杂的题面啊。经过阅读,我的心中渐渐有图的轮廓了。
地面站台可看作依附于站厅的,而一条线路又可被转化为一个点。
完全等价的,这是一个二分图(站厅/线路)。
\(5\times 10^5\) 条边,\(5\times 10^5\) 个询问,求两点最短路。
激烈的思考。。。画了 \(O(\infin)\) 个二分图。。。我好像对二分图一无所知,只会暴力Dijstra。
先写后面T3,T4的暴力吧,写完再回来安心想T2。
56min,看T3,简单的题面,简单的数轴,这种题放在T3必然来者不善。
不过特殊性质好像很强,想一下吧。
可能是因为我在平常模拟赛就习惯于T2不写写T3,这次T2又毫无思路,我就多想了一会儿T3。
77min,会 \(O(n^2)\) 了,可以预处理 \(fr\) 和 \(nex\) 表示节点 \(i\) 可以一次转移到的最左/右节点,双径岛屿对就是 \(u\in fr\^{t+1}_v,fr\^t_v\) 且 \(\sum_{p=1}^{t+1}\begin{cases}0&nex^p_u=fr^{t+1-p}_v\\1&nex^p_u=fr^{t+1-p}_v+1\\2&nex^p_u>fr^{t+1-p}_v+1 \end{cases}=1\)
的 \((u,v)\) 点对。可以用类似滚动数组的方法保存状态。
写之前看一下T4。。。树,毫无思路,特殊性质也不强,不打算写了,回来写T3。
120min,调好了T3暴力,虽然大样例根本测不出 \(O(n^2)\) 。
Part III : migrate to the other side(120min~190min)
这(T3)可是 \(2\times 10^6\) 的数据范围,正解要有 \(O(n)\) 吧。
思考了一段时间,线性定然是不能对每个位置都转移一次的,应该是枚举分隔点。
依照上文的式子,可分为三段(实际维护时可以省略一些状态和转移)。注意到一些性质,之后开始写。
180min,虽然写成了,但是大样例似乎有点TLE。
设定编译器配置 Debug -> Release
工具T>编译选项C>编译时加入以下命令:
-std=c++14 -Wl,--stack=1234567890 -static -O2
好吧,依然TLE 2秒多,常数这么大?但考虑到只剩最后一小时,又考虑到最后一小时必然不等价于一小时,只能祈求 CCF 评测机强,数据弱。
Part IV : subway rush(190min~240min)
190min,事到如今,先准备一下T1和T3的提交吧。
nzx\A.cpp -> submit\crystal.cpp
nzx\C.cpp -> submit\migrate.cpp
200min,发现可以利用 \(n\leq 500\) 跑全源最短路,但询问似乎还是会超时。还是打暴力吧。
我可以在40分钟内写完并调好T2 \(O(qm\log m)\) 吗?
220min,写完了,230min,调好了。至多只有 11/25 个点。
230min,又测了一遍T1,T2,T3大样例。
240min,还有人没提交?!
希望那个人最终交上了。
雨如针锋般刺下,于漆黑的夜空中。
出来后,"T2人均了?",好吧,我终究还是不擅图论。
那我辛辛苦苦打的两个小时的超时T3算什么?
返程的大巴上,听到 Air 说自己T3大样例1秒多,我突然想起,我好像不小心用了 lower_bound ,\(O(n)\rightarrow O(n\log n)\)。
在车上,和 zzy 一起欣赏了《花开凛凛满薰香》,在当下的环境,可算是超凡脱俗。
从郑州到焦作,雨一直下。
Day 2
附近的人似乎都是240+.....
回想一下,如果在多几十分钟,我或许能写出T2,或者发现T3的 lower_bound,甚至打T4的暴力。
如果我没有调那个可恶的 system ,结果可能会不同吧。明明都是退役前夕了,还这么鲁莽任性。
或许也有代码能力的原因,导致时间不足吧。模板的掌握,思维的熟练,都是我所欠缺的。
归来暮尽枯叶去,夜雨中,心寂空。
2026/11/2
Twightsetsun