NOIO 題目選做
阿新 • • 發佈:2021-11-19
一些有趣題
表示第一個球在 \(x\) 號障礙物的某個方向,另一個球在 \(y\) 號障礙物的某個方向。
感覺 NOIO 裡的厲害題還挺多的,如果退役失敗的話還是要做一下
P6189
你跟我說這是入門組????那我算什麼
一眼的 70pts 的 nt dp。
設 \(dp_{i,j}\) 前 i 個數 和為 j 的方案數。本質是個完全揹包
採取根號分治的思想
記 \(g_{i,j}\) 表示用了 i 個大於等於 T 的數和為 j 的方案數,那麼 \(g_{i,j} = g_{i-1,j-m}+g_{i,j-i}\)
前者表示拆分序列中增加一個 m,後者表示把當前拆分序列每個數都加上 1。可以發現對於任意一個子序列是可以任意組合的。所以我們最後只需要乘法原理統計答案即可。
P6187
觀察可以發現一個環可以被拆成若干部分,而每一部分相對獨立。樣例解釋有提示了我們只需要將數字分配的儘量不平均即可。然後只需要把所有權值排個序從大到小開始貪心即可。
P6570
隨便分析一下發現一個子序列最多隻有 17 個數,我們可以直接考慮一個複雜度是 \(O(3^n)\) 狀壓 dp。然後還真的能過,有更厲害的 \(O(n2^n)\) 的集合冪級數做法可惜我不會。
P7473
這個題我考場上做過,但是沒做出來。
考慮分析一下兩個球只會在某個障礙物旁邊停下來,考慮到最多隻有 250 個障礙物,我們可以抽象出一個 dp 來 \(\rm dp[x,5,y,5]\)
共計會有 \(O(n^2)\) 個狀態,哦大概就是列舉終點然後做一個多源 bfs 即可非常厲害
我口胡的沒有程式碼。