【題解】排隊接水
阿新 • • 發佈:2019-05-03
題解 opened name 順序 include one src ++ 技術分享
題目描述
有N個人排隊到M個水龍頭去打水,他們裝滿水桶的時間T1,T2,...,Tn為整數且各不相等,應如何安排他們的打水順序才能使他們花費的總時間最少?
輸入格式
第一行,兩個整數n和m,n表示人的個數,m表示水龍頭的個數;
第二行,n個數,分別表示n個人裝水的時間;
輸出格式
一行,一個整數,表示總花費的最少時間。
輸入樣例
6 2
5 4 6 2 1 7
輸出樣例
40
題解
我們開一個數組維護$m$個水龍頭當前的打水等待時間,每次選時間最小的打水即可。
#include <iostream> #include參考程序<algorithm> using namespace std; int n, m; int a[1005]; int s[1005]; int ans; int main() { cin >> n >> m; for(register int i = 1; i <= n; ++i) { cin >> a[i]; } sort(a + 1, a + n + 1); s[0] = 214743647; int pos; for(register inti = 1; i <= n; ++i) { pos = 0; for(register int j = 1; j <= m; ++j) { if(s[pos] > s[j]) pos = j; } s[pos] += a[i]; ans += s[pos]; } cout << ans; return 0; }
【題解】排隊接水