NOI2019 Day1

ImALAS發表於2024-06-20

就準備這樣面對你的 NOI 嗎?

問題:

  • 對拍,極限資料,構造資料。不要老覺得過了大洋裡就可以萬事大吉跑路了。
  • 自己覺得寫不完的東西,一定不要上來就寫。
  • 讀題。讀題。讀題。實在改不了就每題都先寫個暴力驗證題意。
  • 學會放題。一個題實在想不明白就退而求其次。保持冷靜。
  • 儘量一遍寫對。

分數:\(55 + 0 + 0=0\),原因如上。

題解:

T1

考慮按時間順序 dp。將邊按開始時間加入,設 \(f_i\) 為經過第 \(i\) 條邊的最小花費,轉移是一個斜率最佳化的形式。

T2

嘗試轉化題中條件,猜出來幾個零星的必要條件,但是並沒有什麼用。那麼直接考慮序列的生成過程。

考慮最值分治,最大值欽定為最右端的那個,設 \(f_{l,r,k}\) 表示 \([l,r]\) 最大值為 \(k\) 的方案數,轉移 \(f_{l,r,k}=\sum_{p} f(l,p-1,k)\times f(p+1,r,k-1)[\mathrm{區間 [l,p-1],[p+1,r] 均合法}]\)

注意到 \(p\) 只在區間中點附近有 \(\mathcal O(1)\) 種有效取值,猜想有用的區間並不會太多,打個暴力發現就 \(2500\) 個左右。

然後考慮最佳化,這樣的 dp 貢獻形式是經典的,可以使用拉格朗日插值最佳化。分段 \(\mathcal O(n)\) 插值即可做到 \(\mathcal O(Sn^2)\),但是有點卡不過去。

為啥是 0 分?因為我向右走的條件讀錯了,寫了 7k 程式碼調不出來,打暴力發現還不對,睡一覺起來發現讀錯題了,刪了幾個無用分討就過了 /qd。

T3

模擬費用流,我覺得我講不明白,cmd 寫的很好。