time limit: 1 sec
memory limit: 128 mb
submitted: 1729
solved: 783
現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。
第一行包含乙個整數t(t<=50),表示資料組數。
每組資料第一行包含乙個整數n(2<=n<=1000),表示果子的堆數。
第二行包含n個正整數ai(ai<=100),表示每堆果子的果子數。
每組資料僅一行,表示最小合併代價。
241 2 3 4
53 5 2 1 4
1933
似乎有點像是構造哈夫曼樹的過程。每次選最小的兩個數,刪除這兩個數並將兩個數的和加入進去。
#include#includeusing namespace std;
int main()
int a, b, c, num = 0;
while (pq.size() >= 2)
pq.pop();
cout << num << endl;
} return 0;
}
CSU 1588 合併果子
submit page summary time limit 1 sec memory limit 128 mb submitted 1351 solved 580 現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。第一行包...
合併果子 CSU 1588
現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。input 第一行包含乙個整數t t 50 表示資料組數。每組資料第一行包含乙個整數n 2 n 1000 表示果子的堆數。第二行包含n個正整數ai ai 100 表示每堆果子...
CSU 1588 合併果子
現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。第一行包含乙個整數t t 50 表示資料組數。每組資料第一行包含乙個整數n 2 n 1000 表示果子的堆數。第二行包含n個正整數ai ai 100 表示每堆果子的果子數。每...