1. 程式人生 > 實用技巧 >NOI2020 遊記

NOI2020 遊記

寫這篇遊記的時候,感覺自己語文水平完全不行。寫了又刪刪了又寫,寥寥的幾個字硬是磨了好多個小時。得趕緊退役回去學文化課了。

AFO。

Day -2

Day -2 是 APIO 比賽日,就兼著 APIO 遊記一併寫了。

開場懵了,三題都一點思路沒有。

快速瀏覽題意和部分分後,發現 T2 為一條鏈無解,為一個環是最大值,馬上敲完拿了 6 分。搶到一個 ID 兩位數的有分程式,開心(

又瞎猜了 T1 Sub1 的一個結論,只有每個位置都滿足 \(a_i + 1 \equiv a_{i +1} \pmod{M}\)\(a_i\) 是粉刷第 \(i\) 面牆的承包商)才有解,竟然直接拿了這 12 分。不久我就發現這很明顯是錯的,\(0, 1, \ldots, M - 1, 1, \ldots, M - 1, 0\)

這個資料就可以直接卡掉。

接下來一眼秒了 T3 的 26 分,還原出樹後找直徑然後不斷找最遠點,10 分鐘 rush 完求直徑和樹剖 LCA 的實現一遍交上去過了兩個 Sub。才過去半個小時,感覺開場挺順的。

然後開 T2 的樹部分分,感覺很可做,要維護什麼最接近的度數為 3 的點,還有這個度數為 3 的點相鄰的邊權第 3 小的邊,還有特殊情況是兩條鏈全部伸在這個度數為 3 的點的一個子樹內,然後要求最小的邊和次小的邊下去的最小的邊……(說的有點混亂,但我堅信是有人和我想偏到同一個地方去的)寫了好久寫出來了,樣例也都過了,交上去就是死活過不了,連著 WA 了十幾發,暫時放棄了。

半場過去了,分數還是好低,只好試著實現了一下 T1 的 Sub2, 3,又連著 WA 了十多發,到三個半小時的時候才過了前三個 Sub。

又花了一個小時優化了做法,才過了 T1 Sub4。這時候只剩半個小時結束,才 102 分。突然想到了 T3 完全二叉樹的做法,趕緊去寫。

離比賽結束只差 1 分鐘的時候寫完了,本機小資料測試都過了,交上去。本來滿心期待著能拿 21 分,等了半分鐘後,比賽結束了,評測結果才出來:CE,std::sort 未定義。

發現自己忘記開 algorithm 庫了,過編譯是因為互動器幫我開了……

最後只有 102 分,丟人了。希望能拿一個銅牌。

NOI 前一天的考試打得爛成這樣,瞬間變得非常慌。

Day -1

從福州坐高鐵去長沙。我們買了一班最便宜但是最慢的,在福建和江西境內都憋屈地只能跑 200,入了湖南才加到 300。我在車上讀前幾個月羅翔老師推薦的書《房思琪的初戀樂園》,花了五個半小時看完了,目的地也剛好到了。

學校意外的離高鐵站很近,擺渡車不久就到了。接著就是報到登記,一系列手續挺是繁瑣,隊伍也排的頂長。終於登記好後,我們領了胸牌和與式的衣服,還有一個贈送的大包包,由志願者領到宿舍了。志願者的友善我給五星好評,在我們手忙腳亂拿不下所有物品的時候,志願者主動過來幫我們拿,並一路送到宿舍裡,真的感謝他們的幫助。

晚上去食堂,本還擔心著會不會被辣嗆,結果發現是剛剛好的辣度,不僅可以接受,吃起來還特香,簡直是我吃的最好吃的食堂。我敢肯定這不是我旅途勞累後覺得飯菜好吃的原因,因為接下來的幾天我的味蕾都是被這樣的滿足。

宿舍有晾衣繩、衣架、臉盆、水桶和洗衣液,可以洗衣服了,好評。

這天晚上宿管阿姨好像忘了熄燈,我們通宵到了快兩點。

Day 0

早上七點半迷迷糊糊睜開眼睛,想到八點早餐就結束食堂就要關了,趕緊把其他人叫起床。火速洗漱後吃了早飯,到操場上集合前往開幕式會場。

開幕式最有趣的部分就是杜主席講話。和其他老師不同,杜主席講的非常中肯,非常貼近實際生活。從他的描述中,我也體會到了這次辦賽的不易以及領導們的勇氣與付出。值得一提的是,杜主席 “定” 了一項新規矩:出現一次剩飯就扣 1 分(沒錯,粉兔就是因為這個沒有金牌的,就是的就是的(大霧))。

下午筆試和試機。筆試沒有懸念的滿分了,試機的三題是去年的鬥主地、序列和 I 君的探險。看到互動題了,說明今年有互動題了,更慌了。

晚上 10 點半,宿管老師在粉兔洗澡的時候熄燈了。夜空幾乎透不出光芒,浴室裡漆黑一片。我和同宿舍的 lh 覺得粉兔好慘,但除了調侃宿管老師外,也做不了什麼。

Day 1

上一天熄燈很早,也睡的很早。早上 7 點起來也蠻有精神。在食堂吃早餐的時候就十分的緊張,拿托盤的手一直不停地抖著抖著,從脖子到腳全身都在發涼。我和 lh 說,我感覺好緊張啊。lh 也用發抖的聲音說,他也很緊張,去年也沒有這樣子。我感覺我說錯話了,在一個把這當做最後一戰,不成功便成仁的高二學長面前提起這樣的事,只會讓他心態變差。我低過頭,便不再說話了。

前面老師讓大家稍作整理,8 點 1 分正式開賽了。我看到第一頁的試題摘要:傳統、傳統、傳統。看來互動在明天嗎,那運氣還不錯,今晚可以再學學互動。

看到第一題。圖論,\(n \le 50\)\(T \le 10 ^ 9\)。好像是矩陣快速冪裸題?看了看 \(w \le 5\),直接拆點,\(\mathcal{O}((nw)^3 \log T)\)。覺得好難寫,先寫了個 \(\mathcal{O}((n + m)T)\) 的拓撲排序,就放一邊先看 T2, T3 的部分分了。

T2 似乎有個明顯的容斥,記 \(f(S)\) 表示不經過 \(S\) 內邊的方案,答案大概是類似 \(\sum (-1) ^ {\lvert S \rvert} f(S)\) 的一個式子(\(-1\) 的指數記不清楚有沒有 \(+1\) 了)。\(f(S)\)\(S\) 交集大小有關。\(S\) 的交集可以用 FMT 來求,就是對每條邊貢獻到所有經過它的子集上,這是一個超集加可以取補集之後變成子集加操作用 FMT 來快速維護,複雜度是 \(\mathcal{O}(nm + 2 ^ m m)\),拿了 40 分。稍微想了一想能不能優化這個容斥式子,沒有任何思路,就放一旁去看 T3。

T3 看到是個矩形逆序對,又看見我們區有位長頭髮的監考老師走來走去,又注意到題面裡有個小 L,瞬間知道是怎麼回事了。想都不想直接奔著部分分打。24 分平方暴力樹狀陣列直接做,特殊性質 A 區間逆序對莫隊 + 樹狀陣列硬上,雖然我也會二次離線但是完全不想打,測了極限資料似乎都挺快,特殊性質 C 二維數點直接離線樹狀陣列做。特殊性質 B 見過類似的套路,所以一眼看出來是掃描線建樹 + 啟發式合併求答案。但只有 12 分而且好難寫,就回到 T1 去寫正解了。這時候是四個小時,\(65 + 40 + 52 = 157\) 分。

T1 正解意外地好寫,半個小時寫完一遍過編譯過樣例過對拍了。然後去 rush 特殊性質 B,寫了 20 分鐘後還遙遙無期,離結束只剩 10 分鐘了。於是扔掉去檢查檔名、陣列大小之類的問題。

下午出成績了,沒掛分,\(100 + 40 + 52 = 192\)。同校同學的 T2 都比我高,他們說這個 \(\mathcal{O}(n ^ 2)\) 做法可以一眼秒,線段樹合併的優化也很顯然,我自閉了。事實證明網上同步賽上初三的學弟也把這題 A 了,我自閉得更嚴重了。

講評的時候說 100 名線在 203,排名在自己預期之上,還挺激動的。

晚上夏哥直播了糖豆人,B 站轉播鴿了好久,學校訊號又好差連不上 404,崩潰了好久。十點半左右開始轉播了,我用大會員返還的金瓜子買了一些禮物送,終於把粉絲牌子刷到了 10 級,可以送泡泡槍啦!無比激動。直播到十一點,夏哥下播了,我也去睡覺了,我和直播貼貼。

宿舍裡就剩粉兔沒洗澡了。粉兔準備去洗澡的時候,宿管老師又把燈熄了。粉兔又摸黑洗了一天。

Day 2

還是很緊張,一點也沒有放鬆。教練說的什麼第二天心態會好一點,都是騙人的。

早上準時開題,看到三道傳統,我人懵了。

翻到第一題,構造一個方案,我人懵了。

翻到第二題,題面這麼長,我人懵了。

翻到第三題,弦圖,我人懵了。

我考前還認為 NOI 不會考構造題的。構造題這種題目,部分分就極其難出,放在模擬賽裡訓練思維可以理解,放在正式比賽勢必會造成巨大的且奇怪的區分度,而這是應當避免的。

就我個人所看到的,福建省的情況:這道題是否做出來就對應了是否進集訓隊 —— 沒做出來,其他題做成什麼樣都無濟於事。

我考場第一個結論都沒猜出來,完全不會構造。出題人講評的時候說隨便暴搜一下就可以搜出 \(n, m \le 4; k \le 50\) 的方案,我是完全想不出來怎麼搜。狂碼了 200+ 行的暴力列舉 + 最大流 check 還原方案,\(\mathcal{O}(\binom{n}{2} ^ m \cdot \operatorname{maxflow}(n + m, n + m))\),一個多小時後拿了 15 分。最終也是 15 分。其他題排名都進了前 150,只有這題在前 300。

T2 題面雖然長,還是非常易懂的。正如講評時有位大佬所吐槽的那樣:我希望這樣子的題面在 OI 中再次出現。我也有這樣的願望。

樣例有 12 分好評,直接寫了。

鏈的 4 分是送的,除了 \(\exists n = 1\) 都無解,直接寫了。

性質 4 的 16 分從鏈拓展一下,寫個樹形 DP 就有了。這題短時間內就拿了 32 分,比 T1 憋屈的 15 分網路流爽多了。

接著我想性質 4 的樹形 DP 可以拓展,只要非空左子樹合法且非空右子樹合法且空左子樹合法且空右子樹合法,則這個子樹合法。實現了發現過不了樣例 4 和 5,有一兩個 No 的被我判成了 Almost Complete。賽後得知這個做法是出題人點名卡的 “三縮一” 做法,不過好像有人在這個做法的基礎上加個 “忽略左右子樹都不是葉子的樹” 這樣的特判 A 了。現在我不知道這個加了特判的做法是不是對的,聽起來是很靠譜的。因為如果一邊不是葉子,那麼會存在一個這個位置上是葉子節點,然後另一邊子樹是可以無限擴張的,這個樹就是沒有用的。

T3 感覺特殊性質 B 很可做,就是拉完鏈後不能走回頭路,感覺很 DP 的樣子。想了兩個多小時,寫了好多個假 DP 都過不了樣例。最後搞了個很麻煩的 DP:維護一下當前在奇鏈 / 偶鏈上,另一端的鏈頭是否被隔開,上一步走 1 邊是在前一步還是更之前,dp[n][2][2][2] 這樣的超麻煩的東西,寫了好長好長的轉移,成功把程式答案和標準答案的位數做到相同了,但都是過不了。最後 puts("-1") 走人。

出考場我自閉了,但聽到輸出 -1 的人意外的多,我心中一喜。又聽到 A 掉 T1 的人也非常多,我心直接涼了。

下午出成績,沒有掛分,-1 竟然有 \(5\) 分的成績。\(15 + 32 + 5 = 52\),兩天加起來連筆試 \(344\)。銀牌應該是有了,但估計只能排在中部吧。

晚上聽講評的時候,待在宿舍的 lh 打電話過來,說線出了。我 125 名銀牌,他 45 名進隊了,粉兔 51 名恰好被線卡了一分。然後被教練催去面試,北大老師問了我幾個問題,就建議我報考北大的強基計劃,我也提交了報考北大強基的申請書。

挺開心的,感覺高一的課沒有白停,取得了滿意的成績,也收穫了自己努力所向的東西。

回到宿舍,lh 進隊,粉兔大概率進隊,氛圍是輕鬆愉悅的。大家在一起划水、聊天,就這樣到了很晚很晚。

11 點多的時候,還是隻有粉兔還沒洗澡。我問粉兔要不要趕緊去洗,他說都考完了應該不會熄燈了吧。話語剛落,宿管老師就把燈熄了。

最後一晚的住宿,粉兔還是沒能逃過厄運。

Day 3

早上本來想聽國家隊答辯,到了會議室發現人坐滿了,就到隔壁的自習室寫遊記。本來寫了很長很長的心路歷程,想把我這半年來所有的壓力宣洩在遊記裡面,但又想到現在不應該是傳播負能量的時候,就把寫了的 1000 多字皆數刪了。

頒獎典禮上,看著胸口掛著的沉重的銀牌,心裡有一種所有付出的努力全部凝成了實體,變成了這枚獎牌的感覺。我不知道如何描述這樣一種心情,好奇怪呵,明明掛著那麼重的東西,卻感覺是卸下了更重的東西。

下午做高鐵回了福州。沒書看了,取而代之,我把《夏色皆守》的前三天看完了。好感動啊,我發現原來友情可以是這麼美好的東西。朋友可以成為那種你在最寂寞最茫然的時候唯一的依靠,真真切切打動了我的心靈。至於為什麼不看完第四天?因為流量沒了。

晚上 11 點多回到家,NOI 2020 之旅就結束了。

8 月 21 日

寫遊記的今天,應該是 Day 4,但我不想用這個作為今天的標識了。我的競賽旅途已經過去,最後一站留在了坎坷的 NOI 2020,火辣的長沙。這段和同學們在機房裡一起奮鬥的時光,讓我收穫了許多,不僅有學科知識,也有社會經驗和為人的道理。我相信著,多年以後當我回想起青春生活時,這段競賽生涯一定是其中最優美的華章。


Tweetuzki
2020 年 8 月 21 日