現在有n堆果子,第i堆有ai個果子。現在要把這些果子合併成一堆,每次合併的代價是兩堆果子的總果子數。求合併所有果子的最小代價。
第一行包含乙個整數t(t<=50),表示資料組數。
每組資料第一行包含乙個整數n(2<=n<=1000),表示果子的堆數。
第二行包含n個正整數ai(ai<=100),表示每堆果子的果子數。
每組資料僅一行,表示最小合併代價。
241 2 3 4
53 5 2 1 4
1933
優先佇列有乙個功能是元素在入隊的同時進行自動排序,預設非公升序;這時候需要自定義排序型別,然後每次把佇列的前兩個元素加起來再入隊。
priority_queue <
int,
vector
,less<
int> > p; //非公升序
priority_queue <
int,
vector
,greater<
int> > q; //非降序
#include #include using namespace std;
int main()
for(int i = 1; i < l; i++)
cout<} 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 表示每堆果子的果子數。每...