「DIARY」NOI2021 小結


這篇就主要說一下個人感悟吧,雖然不是金牌選手,但還是希望多多少少能對后來者提供些幫助

1. 預備

省選到 NOI 的准備,就當講講故事。

省選考下來好像不是很行,本來退役記都寫了一半了,結果發現省隊最后一名苟進去了 awa 隨后就是拋開一切准備 NOI。省選聯考固然難,但做過 NOI2020 的線上賽,也知道 NOI 和省選畢竟不是同一個等級的,做足了心理准備。

與其他競賽強校聯合訓練是准備 NOI 的主要方式,也就是一起打比賽,分享試題。省選時兩天一次測試,現在幾乎每天都考,訓練強度直接翻了倍。每天上午打比賽,下午晚上補題;題目難度要向 NOI 靠攏,補題的難度不言而喻,基本上一天也就耗在了補題上。再像以前那樣寫長篇大論的博客總結試題是不現實的,所幸自己一直保留着「刷題記錄」這種東西,記錄每道題的主要算法,再對這道題根據自己的收獲給出一個價值(是否需要復習、重做,或者重溫思路);實際上到訓練后期這種記錄就足夠了。

知道進入省隊的消息后沒過多久就去北京集訓,這是我第二次長時間外培。其實外培和平時的訓練區別就是“有一群人和你一起考試”,的確人多一些更有考場的感覺。到了外地,作息時間可能有 1h 左右的調整,需要先適應;不過更重要的還是適應考試環境。實話實說,外培講課的效果其實並不比線上視頻好,人太多根本不方便提問;一些人的解法可能和 std 不同,值得一聽,雖然大多數時候是半懂的狀態,但是至少還是要在腦海中留下一個印象——這道題可以這樣分析。

做比賽碰到的算法大多數是學過的,就當是復習。能寫的題就寫,其實也是復習一些模板(在之后敲模板題的時候有些算法就可以 skip 了)。

偶爾也會碰到沒學過的算法,聽評講肯定是聽不懂的,還好有 OI-wiki 以及其他博客。到 NOI 的階段,發現有一整塊知識缺失是不可能的,多數沒見過的算法都是一小點;如果沒有沖金牌的目標的話,這種算法就把比賽題補了就合適了,再拓展練習的話,一是大概率不會碰到,二是很難把握算法精髓,NOI 肯定不會考板子,即使碰到也不容易想到正解。

教練有時會讓我們研究一些論文,同樣的道理,不需要大規模練習。

2. 練習賽

本來想在前文就順帶說了的,但是看起來得單列一節。

練習賽不僅是做題,還要練策略。練習賽需要重視,但是畢竟不是正式比賽,可以拿來做實驗( ̄︶ ̄),比如聽說一種策略是「拼了命也要做出第一題」,可以試一試然后死得很慘

練習賽是模擬正式賽,但有一說一,和 NOI 差別肯定很大。NOI 試題有一個共同點是測試點分得特別細,練習題就很難有很細的部分分,而且還綁點╰(‵□′)╯。考下來分數肯定會集群,所以練習賽比較考驗某一個思路的突破,以及實現的精細。不管怎么練,始終記住正式比賽啥都不會寫的時候「部分分+亂搞」yyds。

多校聯訓總共六十多場比賽,越到后期越難,如果狀態不佳,連續幾場考爆是常有的事。聽到家長說「看你們這些競賽生都已經考麻木了」,實際上只有外人會這樣認為。最后十場練習賽連續爆炸,每次考完看到自己的分數,覺得「可能就這樣了,無所謂了」;但是中午躺在床上腦子里就只剩「真的無所謂了嗎?憑什么我學了這么久,憑什么我都沖進省隊了,還是考得這么差?」;摔東西、砸牆、長跑……獨自一人發泄一通,似乎又好了,告訴自己「明天一定要 200+,再拿一次 rank1」。自言自語在人群中不太好意思,但一個人的時候久不必要隱瞞了。每次自己從「期望后的失望」中回復過來的時候就會想起一首歌:

給我 點時間就好

讓我 安靜地墜落

請不要擔心我

並不需要太久

然后裝作

沒發生過

——《難過 233 秒》

大概就是這樣吧。

終於在最后一次練習賽時,整個人放開了,啥都不管放開了考,得到了自己滿意的名次。

3. 臨考

NOI 就跟個夏令營一樣,任務安排特別寬松,給了選手特別特別多的時間。

NOI 臨考的時候最煩的是「不知道要干什么」,但是必須要找到事干,個人覺得勞逸結合是比較好的選擇。

考前不需要太壓抑自己,尤其是到了宿舍過后,一個人一直復習往往會把寢室弄得特別緊張,所謂內卷(´Д`)。喜歡玩游戲就玩,喜歡打牌就打,喜歡唱歌就唱(不要擾民⊙﹏⊙∥),只是每次 NOI 都把體育館給占了,打球之類的基本上不太可能,而且夏天比較熱。(這次 CCF 報道廳把乒乓球館占了(ノ`Д)ノ)

有句話說的好:「勞逸結合是不錯,但也別放松過頭」[doge] 適當地卷有助於保持自己的狀態。我復習主要是看自己的博客,還有把刷題記錄挨個看,主要復習思路。NOI 不太可能撞題,所以復習重點在「怎樣找到這道題的切入點」或者一些實現細節。

另外住在寢室里有個好處……如果是一個比較活潑的寢室(o゜▽゜)o,室友可能會在 Ta 發現某個神奇算法/思路的時候發出驚嘆 awa 雖然嘴上說着「NOI 要是考這個算法,我 ***」實際上很有可能一奶一個准_(:з)∠)_

4. 考試

考前啥都不想,唱首歌就上路 awa

不管 CCF 又出什么幺蛾子導致比賽延時,反正比賽都是 5h。開考后先通覽題,只要沒有去年 NOI2020 Day2T2 那種玩意,差不多十幾分鍾就能了解大概題意。此外注意數據規模。

然后不管哪道題比較有思路,反正按順序做,不會做就寫部分分。NOI 大概是按難度排序的,所以留給前面的題的時間還是得多些。T1 如果能想出來,思考+寫代碼 2h 對於一個銀牌選手並不過分;如果沒啥思路,頂多 1h 過后必須寫代碼,能寫多少寫多少;2h 沒調試出來,先保存着放一放,換 T2。T2 的策略和 T1 差不多,只是思考時間可以縮短一些,一定要給 T3 一些時間,哪怕是寫暴力也可能花費一些時間。

至於 T3,還是那句話,如果不是沖金牌,開局就看部分分。考前學會了一個看部分分的方法——分欄看。T3 的部分分往往是把每個測試數據的信息挨個列出來,表格長得離譜(。_。),但是可以看它每一列的特殊性,比如一些點的 \(n\) 很小,一些點的 \(k\) 很小,一些點有特殊性質……

寫完 T3,如果 T1 沒寫出來,現在就可以打回馬槍了(反正我 Day1 就這么干的)。調試的時候如果沒有合適的大樣例就寫對拍吧!比干瞪眼強多了。

考試結束前 15min,代碼一存,檢查:

  1. 文件目錄,文件名,文件輸入輸出;如果你不確定代碼放的位置,可以問工作人員;

  2. 數據規模,包括數組的大小和數據類型(long long);

  3. 編譯:O2 和 C++11 開和不開都要測一測,應該以后都會開 C++11 但還是要看清楚;編譯完測文件大小,MLE 和 CE 一樣慘;開所有你記得的編譯警告,盡管網上說只開 -Wall 就夠了,但是似乎有些東西比如 -Wconversion 就需要單獨開;

    除了開了 O2 警告你 scanf/printf/freopen 的返回值沒使用這種屑警告,其他警告都要重視,尤其是:

    • 隱式類型轉換;
    • void 函數可能木有返回值;
    • 位運算的順序;
    • 變量重名(養成好習慣( ̄▽ ̄)")。
  4. 用文件輸入輸出測樣例,eg:

    cd qi
    g++ -o qi qi.cpp -std=c++11 -O2 -Wall -Wextra -Wconversion -Wshadow
    cp qi1.in qi.in
    ./qi
    diff qi.out qi1.ans -w
    
  5. 檢查代碼里是不是還輸出了中間變量,建議用 fprintf(stderr, "")/cerr 輸出中間結果,最后直接搜索 fprintf/cerr 刪掉就行了;

  6. 刪掉代碼里所有 assert,盡管你覺得只要 assert 掛了就會錯,但是如果加了 assert 就肯定沒戲,刪了過后可能會出奇跡o(* ̄︶ ̄*)o

5. 結語

作為一個 OIer 的學習生活已經結束了,也僅能以一個退役學長的身份和后來者交流了。

自己瞎編了六個字送給現役或有意參賽的人:『慎始,篤行,善終』。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM