1. 程式人生 > 實用技巧 >NOI2020同步賽總結

NOI2020同步賽總結

省選差十來名進隊,只好在學校參加同步賽。

Day 1

開始的時候網站出了點小問題,延了十五分鐘。

一眼發現 T1 可做,然後開始寫 40 分部分分,然後寫 A 類資料,兩個部分分對拍,然後開始寫 \(k \le 10\) 的部分分,然後再和暴力拍...一番操作後,三個小時過去了...

還沒寫正解(儘管我會),我決定先看看 T2 和 T3。(這時候已經比較慌了)T2 題面好評,給了簡化版題意。看完 T2 感覺我能拿 16 分,但是覺得 \(2^m\) 的容斥不是很難寫。簡單構思以後,我去寫 \(2^m \times mlogn\) 的虛樹容斥。通過部分大樣例後去寫 T3(這裡沒花太長時間,大概也就半個多小時)

T3 題面好評,簡單易懂。發現就是一個有限制的“順序對”數數題。24 分暴搜,16分莫隊,看起來不是很難寫。C 類資料好像也不難。寫完暴搜莫隊,又寫了對拍程式,相互拍,不知道為什麼總覺得 C 類資料需要 K-D Tree 就沒寫(實際上隨便亂搞就行啊,弄個主席樹之類的資料結構支援二維數點即可,反正 1GB 怕他個啥),主動放棄 12pts。(這個時候只剩半個小時了。事實證明我放棄是對的)

回過頭來抓緊時間寫 T1 正解,發現把部分分稍微改改就好了。造個極限資料發現 \(k \le 10\) 的部分分隨便一個數據就要跑 4s,然後急忙優化,跑進了 1s。然後再測,有的點還是 4s,於是乾脆註釋掉了所有 \(k \le 10\)

的部分分,全用正解程式碼。發現挺快,但是最慢要跑 2.1s。很慌。

然後就結束了。期望 100 + 32 + 40,實際 100 + 32 + 40,如果沒打錯檔名就穩得很。(結果發現人均200+)

Day 2

提前開放網站好評。

上來開 T1,覺得是普及組難度的題。然後再看樣例,發現每次一種材料能不取完,空歡喜一場。然後開始貪心,找反例,發現不是很好搞。發現 \(m \ge n - 2\),還有 \(m \ge n - 1\) 的部分分,一定有貓膩。看樣例的 -1 的情況,以及大樣例的 -1 的情況,感覺好像 \(m \ge n - 1\) 的時候會有解。然後自己推了四五個結論,證明了 \(m \ge n - 1\)

的時候有解,並且證明了 \(m = n - 2\) 的時候只有當原材料能夠分成兩部分,並且滿足 \(\sum_{i \in S} d_i = (|S| - 1) \times k\) 的時候才有解,但是有些半信半疑。一看時間,過去兩個半小時了,趕緊寫了寫暴力揹包的方法就去看下兩個題了。

開 T2。題目過長,不過還是很容易懂的,但是好不可做啊。後來想了一種 Hack 的方法,能做到線性,寫完後覺得我又 A 了一道題,結果過不去樣例 4.只好回去寫了幾個特判,期望能過前三個點。這部分用時大概一個小時。

開 T3。似乎題目給的是個弦圖,但是好不可做啊,交了個簡單的 dijkstra 最短路就溜了。本來想判 -1 的,後來想到了 UNR#4 的 Day2T1 就沒交,只特判了 \(m = n - 1\) 的 -1.

又回來調 T1,畢竟這是我唯一能拿大量分數的題。看起來同機房的同學已經坐不住了,打擾到我調題,再加上我不太確定第一題的結論,感覺很難受。

期望得分 70 + 12 + 0,實際得分 35 + 12 + 15,第一題沒有清空 atot,還沒有判 f[j + 1][w + d[i]] = false,一個讓我丟 10 分,一個讓我丟 15 分。看來還是考試的時候有點慌了,不夠穩。

賽後總結

到現在我已經在洛谷或loj上過了D1T1,D1T2,D2T1,D2T2,感覺難度並不是很高(應該是吧),但是考場上就是想不到。感覺總是被卡在一道題的時間太長,導致其他題沒時間想或寫。以後應該練一練做題速度的。

還有,因為平時做題的主要目標是 AC,但是考試的主要目標是儘可能多地拿分,所以我一看到部分分就想拿,把正解擱到後面,還寫三四個 subtask,花費大量時間。實際上我應該先想一想正解,寫出正解後只需用一個及其暴力的程式碼用來對拍即可。

此外,考試的時候一定不要慌,不要受外界影響,把能拿的分都拿上就好,不用管別人都拿了多少分。正式考試的時候應該不會讓外界影響到自己的,就算真的有人吹口哨或大力敲擊鍵盤,把自己的心靜下來就不會受到干擾了。從本質上看,受到干擾實際上就是心裡不靜,太慌了。冷靜下來,往往有助於想出正解/少出bug/更快調出bug。

可以發現,符合我的實力的部分分大概是 100 + 100 + 52 + 100 + 36 + 20 = 408 分,全部拿到並保證一分不掛應該能達到第二十多名。所以,進集訓隊真的那麼難嗎

以我現在的水平,把自己會的/給更長時間能想出來的都拿全分,前一百應該就問題不大了。把我看完題解能自己懂的也拿全分,集訓隊應該就問題不大了,不一定要幹出來那些超級難的題(比如UNR#4D1T2,3,D2T1,2,3),但是一定要保證能拿到的分全部拿到。所以,明年考 NOI 之前,拿全這些分將是我的主要目標。