思路:環狀的直接在n後面加上a[0]-a[n]變成鏈狀即可。
這題範圍小,如果n<1000,則必須四邊形不等式優化降低複雜度為o(n^2)
code:
#include
#define inf 0x3f3f3f3f
using namespace std;
const int ax = 4e2+6;
int dp[ax][ax];
int a[ax];
int s[ax][ax];
intsum[ax];
int n ;
int main()
for( int i = n + 1 ; i <= 2 * n ; i++ )
for( int i = 1 ; i <= 2 * n ; i++ )
for( int r = 2 ; r <= n ; r++ )}}
}int res = inf;
for( int i = 1 ; i <= n ; i++ )
printf("%d\n",res);
return
0 ;}
注:
四邊形不等式優化講解:
證明:
應用:
s[i][j]記錄dp[i][j]取得最優解的k,每次只需要將k從s[i][j-1] 到 s[i+1][j]列舉即可。
石子合併 四邊形優化
動態規劃的經典題目,在遇到狀態轉移方程像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 又有單調遞增性 並沒有仔細看 以後有時間一定補...
石子合併 四邊形優化
description 在乙個操場上擺放著一排n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分。input 第一行是乙個數n。以下n行每行乙個數a,表示石子數目。outpu...
四邊形優化
匆匆忙忙搞了一下四邊形優化,也就是做了幾道入門題而已 四邊形不等式詳解 反正我就記住這句話 判斷w是否為凸即判斷 w i,j 1 w i,j 的值隨著i的增加是否遞減 hdu 2829 include include include using namespace std define maxn 1...