「學習筆記」四邊形不等式優化 / 決策單調性優化
記點結論,感覺證明很麻煩並且比較平凡就不記了。
定義
設函式 \(w(x,y)\),其中 \(x,y\) 整數,若對於任意整數 \(a,b,c,d\),滿足 \(a\leq b\leq c\leq d\),都有 \(w(a,c)+w(b,d)\leq w(a,d)+w(b,c)\) 成立,則稱 \(w\) 滿足四邊形不等式。
簡記為:交叉小於等於包含。
定理一
若對於任意正整數 \(a,b\),滿足 \(a<b\),都有 \(w(a,b)+w(a+1,b+1)\leq w(a,b+1)+w(a+1,b)\) 成立,則 \(w\) 滿足四邊形不等式。
當 \(a+1<c\) 時,由條件得 \(C+B\leq A+D,D+E\leq B+F\)
,兩式相加化簡可得 \(C+E\leq A+F\),以此類推,對於 \(a\leq b\leq c\) 都有 \(w(a,c)+w(b,c+1)\leq w(a,c+1)+w(b,c)\) 成立。同理,對於所有 \(a\leq b\leq c\leq d\),都有 \(w(a,c)+w(b,d)\leq w(a,d)+w(b,c)\) 成立。
證畢
1D1D問題的優化。
決策單調性:設 \(p_i\) 為 \(f_i\) 最優轉移的位置(決策點),\(p\) 單調不降即為具有決策單調性。
一般地,對於 \(f_i=\min\{f_j+w(j,i)\}\) 的狀態轉移方程,若 \(w\) 滿足四邊形不等式,則 \(f\)
考慮維護 \(p\) 陣列,初始全為 \(0\),從前往後計算完 \(f_i\) 時,\(f_i\) 會更新一個字尾的 \(p\)。
暴力做這個東西非常完蛋,考慮將 \(p\) 的一段段連續區間看成一個拿下來放到一個單調棧裡,二分單調棧的位置,使得前半部分用 \(i\) 轉移不比之前的 \(p\) 優,後半部分用 \(i\) 轉移比之前的 \(p\) 更優,如果需要斷開就斷開,然後把字尾的都彈出來,壓入新的這個字尾。
當然,dp 到 \(i\) 時 \(<i\) 的 \(p\) 是不需要的,所以可以把單調棧改成單調佇列。
每次最多隻會壓入一個點代表的區間,均攤下來,加上二分,複雜度時 \(\mathcal{O}(n\log n)\)