NOI 2021 同步赛打铁记&总结
由于是同步赛,没有什么现场体会,就说说自己所亲身感受到的吧。
\(Day\) \(-1\) 及之前
复习板子……
看了一遍题库到 UOJ 模拟了下笔试,只有 92/kk/kk
\(Day\) \(0\)
笔试,同步赛没参加。
学长们 ysh 和 yc 99pts;嬴政,谢队和 c03 100pts。
比赛千万不要有任何的功利心理。你越想得到什么,你就越得不到什么。
完全放松,抛开一切压力,这是最好的。
于是晚上 \(11\) 刷《你名》,感觉极度舒适。
——chen_03《FJOI 游记》
于是打算学习队爷,嘿嘿,考前放松一下~
\(Day\) \(1\)(第一天比赛日)
CCF 又咕咕咕了……
大概 8:00 多一点我就坐在电脑前等待了,比同步赛的开始时间提早了将近半小时,结果……等到了 8:30,同步赛网址还没出来;接着 9:00 多一点,听说现场选手开考了,本以为 9:30 要开始了,结果 CCF 硬生生地(明明是自然而然地)把比赛咕到了 10:00……
我当时在 8:30 后发现同步赛不可能这么快开始,于是打开了 b 站,决定重温《你的名字》放松心态(事实证明我做的很对)。
10:00 开考。打开题面,第一眼:三道传统题,开 O2,不错(我可是 nealchen 官方认证的不会交互的萌新!)。仔细阅读了注意事项,遂谨慎开题。
三道题,描述都很简短,题意都很清楚,一眼都很让人自闭,还是选择顺序开题。按照学长的经验先打了个 T1 \(O(nm)\) 30pts 的暴力,方便之后验证正确性,同时决心要拿下 T1。
想了一会儿,发现性质 \(A\) 只需要线段树区间覆盖,打了发线段树再拿 20pts。
过了一会儿,发现性质 \(B\) 只要两条链上覆盖一个数值,求当前点值是否大于父亲;之后又发现 LCA 答案好像不太对,于是另外维护一棵线段树特殊处理 LCA。
这样我的常数就翻了一倍,第四个样例跑了足足 \(1.9s\),然而时限只有一秒……此时已过去了快三个小时。我怕被卡常,于是死命卡常,快读+register+inline+各种玄学剪枝,最后运行时间还是稳定在 \(1.2s\) 左右,自闭了。
\(3.5\) 小时转瞬即逝。我不敢再在 T1 上多花时间了,于是转战后两题。
仔细一看 T2,奇偶数个交点的路径方案数之差???感觉以前做过类似套路的题,然而只记得当时是用行列式做的,具体细节不是很记得……又因为 \(n_1=n_k\le100\),于是猜了个结论:答案为从 \(1\) 到 \(k\) 每个点路径方案数组成的矩阵的行列式。前者矩阵乘法一下即可。稍微手算了下样例,感觉没问题,种种迹象都在暗示着这是一个行列式题!!!
经过 \(1h\) 艰辛的写代码,调试与卡常,终于过了所有样例,时间也卡进了 \(1s\)!感动。
做最后一题时只剩半小时了,想都没想打了个 \(O(nq)\) 28pts 的暴力就走人了。
赛时估分:\([50,70]+100+28=[178,198]\)
赛后打听现场选手的情况,队爷 c03 估了 \(70+75+36=181\),很牛。学长们普遍估在 \(200\) 上下,谢队更是估了 \(244\),感觉谢队今年比较稳。
大家一起等成绩,下午 4:15,CCF 很准时地公布了正式赛成绩,c03 没有挂分,强强!yc \(191\),嬴政 \(198\),ysh \(168\),谢队 \(214\)。本来觉得大家考得都还挺好的,后面传闻说 \(AK\) 的有 \(30\) 人!瞬间自闭,也替他们担心……
在洛谷上测完,赛后估分只有:\(70+85+28=183\),T2 数组开小白丢 15pts/ll/ll。然后想着过去了就让它过去吧,把还没过去的做好才是最重要的!
听说 Linshey CE 了一题,好惨……
\(Day\) \(2\)
把《你的名字》看完了,我心潮澎湃,久久不能平静。令人感动之余,又耐人寻味,实为一片佳作!
学长们去参加现场的 NOI 游园活动了,看起来十分有趣!/se/se
今天十分放松,作息时间和平常一样正常,十点多就睡了。
\(Day\) \(3\)(第二天比赛日)
没有想着翻盘,只是想着《夺冠》中郎平教练说过的「要把分一分一分地咬下来」。
还是先看了三题的题面,虽说是传统题,但题意略显奇怪,题面和样例解释过长,不免看得会有些烦躁……
第一题想到了一个压位的做法,但是那时竟认为判断两个数之间的距离要预处理一个平方级别的表!还认为尽管生成串随机但询问串不随机所以数据不随机!还以为 \(lastans\) 只有 \(0\) 或 \(1\) 可能是个假强制在线题!结果这还不如写一个 bitset,预计 24pts。
T2 也没什么头绪,先写了 20pts 的暴力,在打表发现 \(A\) 性质是斐波那契数,调了一会儿答案没问题了,预计总共拿了 35pts。
与前一天不同,做 T3 的时候,我还有整整两个半小时!看了会儿又臭又长的样例解释,嗯,这题可以容斥?不过容斥的复杂度是 \(O(2^nnm)\),感觉只有 20pts,只能过 \(n\le16\) 的部分情况;又感觉 \(n\le32\) 数据范围只是上面的暴力的两倍,可能可以 meet-in-the-middle 做,但想了会儿发现两边有些许关联且不太容易合并……于是按这个思路瞄准性质 \(A\) 写了个 12pts 的暴力,在最后十分钟调过了样例。
赛时估分:\(24+35+32=91\)。垫底了。
c03 估了 \(28+35+28=91\),哈哈哈我总分竟然和他一样。学长们普遍估在 \(100\sim150\) 左右,谢队估了 \(240\)!翻盘概率很大啊!
这天成绩比较早出吧,c03 只挂了 \(4\) 分,Orz。yc \(154\),嬴政 \(86\),ysh \(82\),谢队 \(224\)。谢队国集稳了!
自己在洛谷上测完,赛后估分只有:\(28+0+40=68\),T2 TLE 了,原因如下:
inline int swapchar(char &a,char &b)
{
char c=a;a=b,b=c;
}
inline LL swapLL(LL &a,LL &b)
{
LL c=a;a=b,b=c;
}
函数类型应该是 void 的……不愧是我……/wq/wq
算上笔试分数线 Au \(498\),Ag \(310\),Cu \(219\),谢队金牌,其他学长和 c03 银牌 Orz。
自己同步赛按照洛谷测试结果估分大概 \(183+68=251\),勉强 Ag 吧,但离 Au 还有非常大的距离。
总结
-
没有认真检查导致白丢分,比如 D1T2 数组开小白丢 15pts,D2T2 返回值错误导致 35pts$\rightarrow$0pts,这是最容易挽救的且最大的失分。
-
想当然而导致丢分,比如 D2T1 有一档数据随机的部分分,我猜到答案可能是全输出 \(0\),但立马又否定了这个想法,但凡动点脑子也不至于会让一个 \(100\%\) TLE 的暴力代替这个还有可能正确的想法,白丢 12pts(好像 c03 也犯了同样的错误……)。
-
以上都是主观原因,讲讲客观原因。平常难题做得少,导致除了前两题分数还可观外后四题分数都极低,所以以后要多做紫黑难度的题。
-
知识面不够开阔,比如 D1T2 只要知道 LGV 引理,D2T2 按照 Tweetuzki 所说的只要知道 SB-Tree,就是两道送分模板题。
-
对简单知识掌握不扎实,理解不深刻。比如 D2T1 的抽屉原理,我就一点沾边的都没想到;还有这道题根本不需要开平方级别的表判断两个数的距离,位运算很简单就能处理。
-
这次表现的还可以的地方有,因为不是正式赛所以心态比较放松,以及有写暴力又仔细检查使得除了 D1T2 和 D2T2 外其他写的分都到手了。
-
应对方法:仔细认真思考检查!不要想当然!多做难题!多学新知识点!扎实掌握深刻理解简单知识!比赛时放松心态写对拍!保证会的分不丢!
2021 年的 NOI 的赛程算是结束了,取得了一个看着还可以但不是很满意的结局,最终还是留下了些许遗憾吧。希望在未来的 OI 之路上,能不忘初心,砥砺前进,奋勇拼搏,在 OI 的赛场上取得令自己满意的成绩吧!
ねぇ、今から晴れるよ!——《天気の子》