藍橋杯 石子合併

2021-07-26 19:39:48 字數 524 閱讀 7465

問題描述

在一條直線上有n堆石子,每堆有一定的數量,每次可以將兩堆相鄰的石子合併,合併後放在兩堆的中間位置,合併的費用為兩堆石子的總數。求把所有石子合併成一堆的最小花費。

輸入格式

輸入第一行包含乙個整數n,表示石子的堆數。

接下來一行,包含n個整數,按順序給出每堆石子的大小 。

輸出格式

輸出乙個整數,表示合併的最小花費。

樣例輸入5

1 2 3 4 5

樣例輸出

33資料規模和約定

1<=n<=1000, 每堆石子至少1顆,最多10000顆。

只得了90分,一組資料超時。

#include#include#include#define max 1005

using namespace std;

int arr[max], min[max][max],s[max];

void dp(int n)

}int main()

藍橋杯 演算法提高 合併石子 (dp)

演算法提高 合併石子 時間限制 2.0s 記憶體限制 256.0mb 問題描述 在一條直線上有n堆石子,每堆有一定的數量,每次可以將兩堆相鄰的石子合併,合併後放在兩堆的中間位置,合併的費用為兩堆石子的總數。求把所有石子合併成一堆的最小花費。輸入格式 輸入第一行包含乙個整數n,表示石子的堆數。接下來一...

石子合併問題

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

石子合併問題

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