20220331刷題日記

P7207

注意到我們從 \(m\) 開始增量,設 \(x\) 是最小的滿足 \(x\&(n-1)=n-1\) 的值,那麼 \([m,x]\)\([l,n-1]\) 按照順序一一對應是滿足條件的,證明放在最後。這樣的話剩下的是一個子問題,用雙指針可以 \(O(n)\)

\(i\) 是滿足 \(m\) 中是 \(0\)\(n-1\) 中是 \(1\) 的最高位,那麼我們增量去做,一定是直到 \(i\) 和比 \(i\) 小的位都相同的時候才停止,那麼我們從這裏開始減 \(1\),不難發現只對 \(i\) 後面的位有影響,所以是可以成立的。

P5307

首先 \(f_{i,j,k}\) 是顯然的 dp,其中第三維是 \(10^6\) 的,但是我們發現其實並沒有非常多我們用得着的狀態,我們考慮設 \(f_{r,s,n}\),計算這個東西我們只需要知道 \(f_{r-1,s,\frac{n}{\a_{r,s}}},f_{r,s-1,\frac{n}{\a_{r,s}}}\) 對,關注到第三維只有 \(\sqrt{n}\) 種選擇。所以整個複雜度被優化到了 \(rs\sqrt{n}\)

CF868F

首先列出 dp 式子。然後發現只能嘗試四邊形不等式,發現滿足,於是考慮分治或者是二分棧。二分棧顯然不是一個很好的選擇,因爲我們同樣難以計算 \(w(i,j)\),於是我們考慮分治。一個比較巧妙的想法是我們按照莫隊那樣的做法去更新我們的區間,發現分治每一層都是 \(O(n)\),於是複雜度有保證。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章