四邊形不等式與決策單調

2022-04-28 19:45:11 字數 1379 閱讀 4588

目錄一維線性dp的優化

二維區間遞推優化

定義存在二元函式\(w(x,y)\) ,其定義域為\(i\),

若對於任意\(a,b,c,d\in i且a≤b≤c≤d\),\(w(a,d)+w(b,c)≥w(a,c)+w(b,d)\)恆成立

則稱\(w\)滿足四邊形不等式。

判定定理

若對於任意\(a,b\in i且a<b\),\(w(a,b+1)+w(a+1,b)≥w(a,b)+w(a+1,b+1)\)恆成立

則w滿足四邊形不等式。

可以感性理解一下吧:\(a,只有等號問題並不影響。

轉移模型

\[f[i]=\min_{0≤j

證明:

設k,k′為\(f[i]\)的決策點並滿足條件\(0≤k′′

不難得知

\(f[i]=f[k]+w(k,i)≤f[k′]+w(k′,i)\)

由四邊形不等式得知

\(w(k′,i′)+w(k,i)≥w(k′,i)+w(k,i′)\)

兩式相加有

\(f[k]+w(k,i′)≤f[k′]+w(k′,i′)\)

於是易知決策點k比k′更優,故得證。

實現當前轉移\(f[i]\),單調佇列維護三元組\((l,r,p)\),表示l~r的最優決策點目前為p。

掐頭,若\(r=i-1\),彈出,否則\(l=i\)

取隊首計算

去尾,如果決策i在l處都比p優秀,則直接彈出p。

如果決策i在r處都不如p優秀,則直接插入p。

否則二分查詢l~r中第乙個可以讓決策點i更優秀的位置

更改隊尾r,把新的三元組代表i的決策加入佇列(注意有可能不能加入)

可以實現\(o(n^2)\to o(nlog_n)\) 。

轉移模型

\[f[l][r]=\min_{l≤k

定理:沒有證明。。

一:若對於上式中的w有

​ ①w滿足四邊形不等式

​ ②對於任意的\(a,b,c,d\in i且a≤b≤c≤d\) ,w滿足\(w(a,d)≥w(b,c)\)

​ 則f滿足四邊形不等式。

二:若f滿足四邊形不等式,則:

​ 對於任意決策\(i,都有下列二者之一:

\[p[i,j-1]≤p[i,j]≤p[i+1,j]\ (轉移中i倒序列舉,j正序列舉)\\

p[i-1,j]≤p[i,j]≤p[i,j+1j]\ (轉移中i正序列舉,j倒序列舉)\\

p為各個狀態的最優決策

\]實現

一般而言,都是直接把第三重迴圈的邊界依情況改成上面的二式之一即可。

可以實現\(o(n^3)\to o(n^2)\) 。

對於此類優化,一般先大膽猜想,然後打表驗證!!

決策單調性 四邊形不等式

include define maxn 10000 10 using namespace std int dp maxn maxn s maxn maxn cnt maxn int main dp i j temp s i j te cout 題目 n 堆石子。現要將石子有次序地合併成一堆,規定每次...

四邊形不等式

總結一下最近幾天對dp優化中的四邊形不等式的學習。證明什麼的似懂非懂,我還是太年輕了。第一種,n 2 nlogn 例題 由於許可權問題 不公開題面 就是1個體積均為1 300,100000個物品,做乙個100000的揹包。發現體積最多只有 300 種,分開做。對於同種體積的物品,顯然按照價值從大到小...

四邊形不等式

若有函式 a i,j 令 i,若有 a i j a i 1 j 1 le a i j 1 a i 1 j 則我們稱函式 a 滿足四邊形不等式。若我們在 dp 過程中會用到類似如下形式的方程 dp i j min dp k j or dp i k dp k 1 j w i j 那麼,只要代價函式 w ...