這場比賽難度明顯遠大於 NOIP 阿偉。
賽時
T1 看了一眼先寫了個階乘級別的暴力,然後用暴力開始手搓樣例,觀察所有滿足條件序列的特點。
造了十幾組以後我發現了很多性質:長 \(n\) 的序列數字 \(i\) 在所有答案中可能的位置有 \(\min(i,n-i+1)\) 種,數字 \(1\) 的位置可以確定,數字 \(i\) 的候選位置可以由 \(1\sim i-1\) 推出來……
嘗試組合,我發現了一種基於數值從小到大依次填充的思路,加上資料結構最佳化複雜度可以到 \(\mathcal{O}(n^2\log n)\)。但是轉念發現賦初值,清空,空間,迴圈順序等一堆東西都需要考慮,十分難寫,於是先去上了 WC。
上完以後開始寫,寫到大概 10:00 開始調,調到大概 10:15 不想調了,就棄了。
T2 等了 10min 除了暴力啥都不會,所以就把一個 \(\mathcal{O}(n^5)\) 的列舉寫了。
T3 感覺思路大開。先寫了一個複雜度 \(\mathcal{O}(n^3)\) 的 \(dp\),然後看上去十分可以用資料結構最佳化。
一開始以為要用二維線段樹,後來發現只需要對每行每列都開一棵就可以了。
算了一下空間帶上常數是 \(8\cdot n^2\) 的,時間是 \(2\cdot n\cdot k\cdot \log n\) 的,還沒算線段樹的常數。
寫完以後發現掛了,調了大概 30min 還是沒調出來,於是去寫 T4。
T4 是我最不會的期望,寫完 dfs 發現果然掛了,不想管了,交了個樣例過不去的程式碼。
回去看 T1,把之前的程式碼都刪了,開始重新思考思路,確立了幾個步驟:
-
先確定數字 \(1\) 的位置。
-
賦值,對所有已知值做一次 LCS 和 LDS ,合理賦初值使得求的時候不會產生額外影響。
-
讓求出來的值和 \(a,b\) 匹配,匹配成功則說明合法單重一定有一種方案可以這樣填充,直接作為答案即可。
-
回到第二步。
此時已經 11:40 了,寫完大概 11:57,還剩 13min ,我覺得可以調出來。
去改初值,陣列定義,迴圈的 \(i,j\),總之改了一堆,最後也是成功的沒調過。
賽後
總分 20+10+10=40,我看了看好像這一屆除了一個大佬分數都 \(\le 60\)。
總的來說,難題還得多練,不能出現會思路不會實現之類的情況。