四邊形優化

2021-06-27 08:55:58 字數 1168 閱讀 1382

匆匆忙忙搞了一下四邊形優化,也就是做了幾道入門題而已

四邊形不等式詳解:

反正我就記住這句話: 判斷w是否為凸即判斷 w[i,j+1]-w[i,j]的值隨著i的增加是否遞減 

hdu 2829

**:

#include #include #include using namespace std;

#define maxn 1111

int dp[maxn][maxn];

int w[maxn][maxn];

int a[maxn], s[maxn];

int t[maxn][maxn];

int main()

for(int i= 1; i<= n; i++)

for(int j= i+1; j<= n; j++)

w[i][j]= w[i][j-1]+ a[j]*(s[j-1]- s[i-1]);

memset(dp, -1, sizeof dp);

for(int i= 1; i<= n; i++)

for(int j= 1; j<= m; j++)

for(int i= n; i>= j; i--)}}

printf("%d\n",dp[n][m]);

} return 0;

}

hdu 3480 **:

#include #include #include using namespace std;

#define maxn 10011

#define maxm 5011

int a[maxn];

int t[maxn][maxm], dp[maxn][maxm];

int main()

for(int j= 2; j<= m; j++)

for(int i= n; i>= j; i--)}}

int ans;

if(m== 0)

ans= dp[n][1]; //m==0的時候選出0個子集ans不應該為0,我以為結果是0

else

ans= dp[n][m];

printf("case %d: %d\n",c,ans);

} return 0;

}

四邊形優化模板

一般適用於區間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 所以求決策...

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 又有單調遞增性 並沒有仔細看 以後有時間一定補...