1274 例9 18 合併石子

2021-09-25 18:51:18 字數 972 閱讀 1331

時間限制: 1000 ms 記憶體限制: 65536 kb

提交數: 3391 通過數: 2175

【題目描述】

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

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

【輸入】

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

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

【輸出】

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

【輸入樣例】713

781621418

【輸出樣例】

239這是一道經典的區間動規題,**如下:

#include"stdio.h"

#include"string.h"

#include"algorithm"

typedef long long ll;

using namespace std;

const int maxn=(int)1e6+5,maxm=(int)1e4+5;

int a[101],dp[101][101];

inline int read()

int main()

for(register int i=n-1; i>=1; --i)

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

for(register int k=i; k<=j-1; ++k)

dp[i][j]=min(dp[i][j],dp[i][k]+dp[k+1][j]+a[j]-a[i-1]);

printf("%d\n",dp[1][n]); //列印答案

return 0;

}

本蒟蒻第二天寫題解……

打卡day.2!! #_#

1274 例9 18 合併石子(區間dp)

1274 例9.18 合併石子 時間限制 1000 ms 記憶體限制 65536 kb 提交數 5754 通過數 3636 題目描述 在乙個操場上一排地擺放著 堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的 堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。計算出將 堆石子合併...

石子合併問題

在乙個圓形操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分和最大得分。分析 假設有n堆石子需要合併,可以設計乙個2 n 1個元素的陣列來儲存每堆石子的個數。...

石子合併問題

在乙個圓形操場的四周擺放著n堆石子。現要將石子有次序地合併成一堆。規定每次只能選相鄰的2堆石子合併成新的一堆,並將新的一堆石子數記為該次合併的得分。試設計乙個演算法,計算出將n堆石子合併成一堆的最小得分和最大得分。沒有用dp 感覺一般的也能寫,時間複雜度也不高。include include inc...