合併石子 (區間覆蓋DP)

2021-08-16 01:40:29 字數 605 閱讀 3534

任重而道遠

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

計算出將n堆石子合併成一堆的最小得分。

第一行為乙個正整數n (2≤n≤100);

以下n行,每行乙個正整數,小於10000,分別表示第i堆石子的個數(1≤i≤n)。

乙個正整數,即最小得分。

7137

816214

18

239

ac**:

#include#include#include#includeusing namespace std;

int n,a[105],f[105][105];

int main()

memset(f,127/2,sizeof(f));

for (int i=1;i<=n;i++) f[i][i]=0;

for (int p=2;p<=n;p++)

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

cout

}

合併石子(區間dp 模板題)

設有n堆沙子排成一排,其編號為1,2,3,n n 300 每堆沙子有一定的數量,可以用乙個整數來描述,現在要將這n堆沙子合併成為一堆,每次只能合併相鄰的兩堆,合併的代價為這兩堆沙子的數量之和,合併後與這兩堆沙子相鄰的沙子將和新堆相鄰,合併時由於選擇的順序不同,合併的總代價也不相同,如有4堆沙子分別為...

合併石子 區間dp水題

合併石子 描述 有n堆石子排成一排,每堆石子有一定的數量。現要將n堆石子並成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過n 1次合併後成為一堆。求出總的代價最小值。tags 最基本的區間dp,這題範圍小,如果n大一些,還是要加個平行四邊行優化。incl...

計蒜客 合併石子 區間dp

題目鏈結 題解 leetcode裡面有個戳氣球的題和這個類似,用區間dp來解。由於n堆 n 2 石子合併,最終一定會有個只剩2堆石子的中間狀態,這個狀態就是突破口。最終的2堆石子一定是在原來的石子裡面連續的,可以用dp i j 表示區間i.j的石子合併後最小的體力消耗,n堆石子消耗的最小體力為dp ...