time limit: 3 second
memory limit: 2 mb
有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1,t2,....tn為整數且各不相等,應如何安排他們的打水順序才能使他們花費的總時間最少。
輸入檔案兩行
第一行輸入打水人數n,水龍頭數r。用空格隔開
第二行依次輸入n個人的打水時間t1,t2,....tn,用空格隔開(1≤n≤1000)。
輸出總共花費的時間。(最後用換行結束)
4 22 6 4 5
23【題解】
樣例的取法
2 4 5 6
注意只有兩個水龍頭
先每個人都等2個單位 ->8
0 2 5 6
再每個人都等兩個單位 這下只有3個人等了 -> 6
0 0 3 6
再每人等3個單位 這下只有2個人等了 -> 6
0 0 0 3
最後乙個人再等3個單位,->3
總共23個單位.
貪心法,每次裝水的時候先讓花費時間少的人先裝,這樣其他所有人都在等,他們等的時間就會比較少,而這個花費時間少的人打完之後,一起等的人就變成n-1個了,剩下的時間可能比較長,但是人數變少了,肯定比n個人一起等時間長的花費時間來得短。先排序,然後用幾個變數作為頭尾不斷減就好。
【**】
#include const int maxn = 1000;int n,r,a[maxn*10+100],sum = 0,num;
void input_data() //輸入資料
void kp(int l,int r) //快排一遍。 從小到大排
}while (i <= j);
if (l < j) kp(l,j);
if (i < r) kp(i,r);
}void get_ans()
}void output_ans()
int main()
2030 排隊打水問題
time limit 3 second memory limit 2 mb 有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1,t2,tn為整數且各不相等,應如何安排他們的打水順序才能使他們花費的總時間最少。輸入檔案兩行 第一行輸入打水人數n,水龍頭數r。用空格隔開 第二行依次輸入n個人的打水時...
貪心1 排隊打水問題
一 心得 二 題目及分析 題目意思 有n個人在乙個水龍頭前排隊接水,假如每個人接水的時間為ti,請程式設計找出這n個人排隊的一種順序,使得n個人的平均等待時間最小。分析 看題目意思,要使每個人平均等待時間最小,當然是接水時間小的排在前面了,因此解法如下。1 讀入n個人接水時間。2 對等待時間a陣列進...
XYNU1248 排隊打水問題(water)
時間限制 1 sec 記憶體限制 128 mb 提交 162 解決 50 您該題的狀態 已完成 提交 狀態 討論版 題目描述 有n個人排隊到m個水龍頭去打水,他們裝滿水桶的時間t1,t2 tn為整數且各不相同,應如何安排他們的打水順序才能使他們花費的總時間最少?只有一組輸入資料哦。輸入 4 2 n ...