1. 程式人生 > 其它 >NOI2021 同步賽遊記

NOI2021 同步賽遊記

Day 1(7.26)

\(8:30\) 延期到 \(10:00\) 了,看了一下去年的題目,之後又去看了看斜率優化dp。

比賽開始之後,我用 \(30\operatorname{min}\) 的時間讀了讀題,感覺三題中第一題最可做,於是去做T1,但是想了 \(15\operatorname{min}\) 都沒想出個所以然,決定先暫時不想正解,去打暴力和鏈的部分分。

我一開始打的是鏈的部分分,用的是線段樹,但是寫掛了,之後就開始除錯,但是我當時其實不太會用紫色勾勾的除錯(平時除錯都是輸出出來看的),而且因為沒過的樣例太大了,很難調,越調越急,調了 \(40\operatorname{min}\) 之後還沒調出來,便出去轉了一圈放平心態。

回來之後很快就發現是多組資料忘記清空一些陣列了,改過來就過了樣例。之後又寫了個暴力,然後就讓它們對拍,我就去想T2。(已經過去 \(2.5\operatorname{h}\),還剩$ 2.5\operatorname{h}$)

T2想了 \(20\operatorname{min}\) 就放棄了,決定先寫一個暴力,之後在考慮特殊性質的部分分。

打了大概 \(10\operatorname{min}\) 之後就寫出來了,但是發現沒過樣例,而且之後不久就發現方法有問題,我就開始更改寫法,試圖寫了程式碼極長兩個解法,但之後都證偽了(其中還除錯了一會兒),我發現只剩 \(70\operatorname{min}\)

了,於是馬上寫了個 \(k=2,n_1\leq10\) 的狀壓dp,之後就看T3去了。

我一開始我看完T3之後,沒有讀懂題目,我不知道為什麼一開始打了個Floyd,之後對著樣例看才知道題目是求可以經過的城市的個數,之後馬上去打一個 \(q\) 次縮點的暴力,但是到最後都沒調對。

考完之後試圖和同機房同學一起調T3,但是還沒調出來。

估分:\(50+20+0=70\)

洛谷測的:\(60+0+0=60\)

實際:未知,但應該差不多。

T1的\(O(nm)\)暴力居然能跑過\(2\times10^4\)?不過可能在CCF那跑不過。

T2掛了,至今未知原因,而且急匆匆打出來的掛了的確很正常。

Day 2(7.28)

網址沒遲到,但是它打不開……\(9:00\)

才開始。

還是用了 \(30\operatorname{min}\) 把題都看了一遍,感覺T1最可做(給我的第一印象是trie)

寫了個trie之後發現空間根本開不下,好像還不如\(O(256nm)\)匹配,然後發現這個常數巨大,於是開始卡常。

發現\(256=16\times16\),於是把每個數都轉成\(2^{16}=65536\)進位制,之後處理出\([1,65535]\)的二進位制下\(1\)的個數,最後匹配的時候算出兩個數每一位的異或的二進位制下\(1\)的個數,加和大於\(k\)就失配,否則匹配成功。

注:我選擇\(16\)並非想到正解,而是我想選\(256\)的因數,發現\(2^{32}\)太大了,\(2^8\)太小了。

之後去寫T2,我感覺這題十分難寫,於是就寫了個暴力和性質A就過了。

之後去寫T3,想了\(1\operatorname{h}\)(中途有出去散心)都沒想到暴力怎麼寫,之後就寫了\(n=m=1\)的點就算了,此時還剩\(1.5\operatorname{h}\)

然後我大膽去給T1卡常了,寫了一堆迴圈展開,之後還剩\(1\operatorname{h}\)

最後1h發現T2好像過不去第3個樣例(WA),之後調到最好\(10\operatorname{min}\)都沒調出來。

最後\(10\operatorname{min}\)我發現用暴力跑都沒過(WA),之後試圖找錯,但還是沒找出來。

估分:\(24+0+8=32\)

洛谷測的:\(32+5+8=45\)

實際:未知,但應該差不多。

T1的\(O(nm)\)暴力又能過\(2\times10^4\)?!!

T2還能給我\(5\)分?!!

T3是正常的。

總結

掛分:這次掛分應該只有Day1T2了,我在T1花了\(2\operatorname{h}\),那時我為了趕緊寫T3連個樣例都不測(沒給對應的樣例,也懶得手造樣例)。但是這都在考場上了,我還能有這種偷懶的心理,這說明我應該要多程式碼保證正確性,也應該合理分配時間,儘量克服惰性。