C/C++ 演算法分析與設計:貪心(排隊接水)
阿新 • • 發佈:2018-11-12
題目描述
N個人同時提水到一個水龍頭前提水因為大家的水桶大小不一,所以水龍頭注滿第i(i=1,2,3......N)個人所需要的時間是T(i) 編寫一個程式,對這N個人使他們花費的時間總和最小,並求出這個時間。
例如有三個人a,b,c,用時分別是2,1,3 排隊順序為c,b,a的時候,c要等待3,b要等待4,c要等待6,總和為3+4+6=13 排隊順序為a,b,c的時候,a要等待2,b要等待3,c要等待6,總和為2+3+6=11 11更小,要找出這樣的最小值。
輸入
一組測試資料的個數n 分別輸入這n個測試資料。
輸出
排隊所花費的最少時間和。
樣例輸入
3 2 1 3
樣例輸出
10
#include<iostream> #include<set> using namespace std; int main() { int n,m,i,s=0,t=0; multiset<int> set1; multiset<int>::iterator it; scanf("%d",&n); for(i=0;i<n;i++) { scanf("%d",&m); set1.insert(m); } for(it=set1.begin();it!=set1.end();it++) { t+=*it; s+=t; } printf("%d\n",s); }