2030 排隊打水問題

2022-05-22 03:12:13 字數 1005 閱讀 1222

time limit: 3 second

memory limit: 2 mb

有n個人排隊到r個水龍頭去打水,他們裝滿水桶的時間t1,t2,....tn為整數且各不相等,應如何安排他們的打水順序才能使他們花費的總時間最少。

輸入檔案兩行

第一行輸入打水人數n,水龍頭數r。用空格隔開

第二行依次輸入n個人的打水時間t1,t2,....tn,用空格隔開(1≤n≤1000)。

輸出總共花費的時間。(最後用換行結束)

4 2

2 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 ...