演算法提高 排隊打水問題
時間限制:1.0s 記憶體限制:256.0mb
問題描述
有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1、t2………..tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?
輸入格式
第一行n,r (n<=500,r<=75)
第二行為n個人打水所用的時間ti (ti<=100);
輸出格式
最少的花費時間
樣例輸入
3 21 2 3
樣例輸出
7資料規模和約定
其中80%的資料保證n<=10
分析:每個人在水龍頭前排隊的時間等於自己打水的時間和自己之前所有人打水的時間和。為了取得最少的時間,將打水時間少的人排在隊伍前。最終求出每一條隊伍的總時間和。
**:
#include#include#includeusing namespace std;
int main()
sort(v.begin(), v.end());
vector> r(r);
int len = r < n ? r : n;
for (int i = 0; i < len; i++)
for (int i = len; i < n; i++)
int ans = 0;
for (int i = 0; i < r.size(); i++)
} cout << ans << endl;
return 0;
}
藍橋杯 ADV 148 排隊打水問題
問題描述 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1 t2 tn為整數且各不相等,應如何安排他們的打水順序才能使他們總共花費的時間最少?輸入格式 第一行n,r n 500,r 75 第二行為n個人打水所用的時間ti ti 100 輸出格式 最少的花費時間 樣例輸入 3 21 2 3 樣例...
2030 排隊打水問題
time limit 3 second memory limit 2 mb 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1,t2,tn為整數且各不相等,應如何安排他們的打水順序才能使他們花費的總時間最少。輸入檔案兩行 第一行輸入打水人數n,水龍頭數r。用空格隔開 第二行依次輸入n個人的打水時...
2030 排隊打水問題
time limit 3 second memory limit 2 mb 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1,t2,tn為整數且各不相等,應如何安排他們的打水順序才能使他們花費的總時間最少。輸入檔案兩行 第一行輸入打水人數n,水龍頭數r。用空格隔開 第二行依次輸入n個人的打水時...