一般適用於區間dp優化。
/*
對於dp[i][j]=dp[i][k]+d[k][j]+w[i][j]的dp方程,如果滿足w[i][j]+w[i'][j']<=w[i'][j]+w[i][j'] (i'<=i<=j<=j')則w[i][j]是凸的,也就是說,對於dp[i][j]的決策s[i][j],必然滿足不等式s[i][j-1]<=s[i][j]<=s[i+1][j].所以求決策時只需要迴圈從s[i][j-1]到s[i+1][j]就行,然後求s[i][j],注意迴圈長度。
區間dp一般用四邊形優化
*/#include#include#includeusing namespace std;
int dp[1005][1005];
int s[1005][1005];
struct pipp[1005];
int main()
for(i=1;i<=n-1;i++)}}
}printf("%d\n",dp[1][n]);
}}
四邊形優化
匆匆忙忙搞了一下四邊形優化,也就是做了幾道入門題而已 四邊形不等式詳解 反正我就記住這句話 判斷w是否為凸即判斷 w i,j 1 w i,j 的值隨著i的增加是否遞減 hdu 2829 include include include using namespace std define maxn 1...
dp四邊形優化
如果dp i j min dp i k dp k 1 j w i j 且滿足dp a c dp b d dp a d dp c d a那麼dp具有四邊形不等式性質 另外如果可以證明w i j 滿足單調性和四邊形不等式性質,那麼dp也具有四邊形不等式性質 單調性 w i j w i j 1 w i 1...
石子合併 四邊形優化
動態規劃的經典題目,在遇到狀態轉移方程像min w i k w k 1 j m i j 的時候就可以使用考慮使用四邊形優化。在i i j j 的條件滿足的情況下,有w i j w i j w i j w i j 那麼就可以使用s i j 同時s i j 又有單調遞增性 並沒有仔細看 以後有時間一定補...