HDU 3506 區間dp 四邊形不等式優化

2021-09-14 03:35:19 字數 805 閱讀 4895

合併石子差不多,題意一樣的。

先來一道弱化版

在乙個圓形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。

試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.

本題題意和上面一樣的

這次變成了猴子聚會了。現在有n只猴子坐成一圈,每只猴子都有交朋友的時間,每次,他只能介紹乙隻猴子和乙隻猴子的鄰居。如果他介紹a和b,那麼每只已經知道猴子a都知道每只猴子b了,這次引入的總時間是所有猴子a和b已經知道的交友時間的總和;求時間最小。

#includeusing namespace std;

#define cppiofast ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)

const int inf=0x3f3f3f3f;

const int n=2010;

int a[n],dp[n][n];

int s[n][n],sum[n];

int main()

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

memset(dp,0x3f,sizeof(dp));

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

for(int l=1;lcnt+dp[i][k]+dp[k+1][j])}}

}int ans=inf;

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

cout<}

return 0;

}

hdu3506環形石頭區間dp 平行四邊形優化

首先先看一下不環形的題目 石子合併 直接附上 思路很簡單,從小區間求出大區間,手打的很快,樣例也很弱,應該沒什麼問題 include using namespace std const int maxn 305 int dp maxn maxn int sum maxn arr maxn int m...

區間DP入門 四邊形優化

區間dp,顧名思義,求區間最值問題。通過合併小區間最優解來更新大區間,然後逐漸更新出答案。要求解在乙個區間上的最優解,那麼就要把這個區間分割成乙個個小區間,求解每個小區間的最優解,再合併小區間得到大區間。所以在 實現上,先列舉區間長度len為每次分割成的小區間長度 由短到長不斷合併 內層列舉該長度下...

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...