SDNU 1048 石子合併2 區間dp

2022-05-30 16:30:14 字數 859 閱讀 1187

有n堆石子排成一圈,每次選擇相鄰的兩堆石子,將其合併為一堆,記錄該次合併的得分為兩堆石子個數之和。已知每堆石子的石子個數,求當所有石子合併為一堆時,最小的總得分。

第一行乙個整數n(1 <= n <= 200),表示石子堆數; 第二行n個整數a(1 <= a <= 100),表示每堆石子的個數,這些石子首尾相接排成一圈。

乙個整數,表示最小總得分。

5

7 6 5 7 100

175

unknown

#includeusing

namespace

std;

#define ll long long

#define eps 1e-9

#define pi acos(-1)

const

int inf = 0x3f3f3f3f

;const

int mod = 1e9+7

;const

int maxn = 1000 + 8

;int

n, a[maxn], sum[maxn], dp[maxn][maxn], mi;

intmain()

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

}mi = dp[1

][n];

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

if(mi > dp[i][i - 1

]) mi = dp[i][i - 1

]; cout

<< mi <<'\n'

;

return0;

}

P1880 石子合併2 區間dp

在乙個圓形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.資料的第1行試正整數n,1 n 100,表示有n堆石子.第2行有n個數,分別表示每堆石...

Codevs2102 石子歸併 2 區間DP

題目描述 description 在乙個園形操場的四周擺放n堆石子,現要將石子有次序地合併成一堆.規定每次只能選相鄰的2堆合併成新的一堆,並將新的一堆的石子數,記為該次合併的得分。試設計出1個演算法,計算出將n堆石子合併成1堆的最小得分和最大得分.輸入描述 input description 資料的...

nyoj 737 石子合併(一) 區間dp

時間限制 1000 ms 記憶體限制 65535 kb 難度 3 描述 有n堆石子排成一排,每堆石子有一定的數量。現要將n堆石子並成為一堆。合併的過程只能每次將相鄰的兩堆石子堆成一堆,每次合併花費的代價為這兩堆石子的和,經過n 1次合併後成為一堆。求出總的代價最小值。輸入 有多組測試資料,輸入到檔案...