time limit: 1 sec
memory limit: 128 mb
submit: 4
solved: 3 [
submit][
status][
web board]
問題描述 學校裡有乙個水房,水房裡一共裝有m 個龍頭可供同學們開啟水,每個龍頭每秒鐘的 供水量相等,均為1。 現在有n 名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從1 到n 編號,i 號同學的接水量為wi。接水開始時,1 到m 號同學各佔乙個水龍頭,並同時打 開水龍頭接水。當其中某名同學j 完成其接水量要求wj 後,下一名排隊等候接水的同學k 馬上接替j 同學的位置開始接水。這個換人的過程是瞬間完成的,且沒有任何水的浪費。即 j 同學第x 秒結束時完成接水,則k 同學第x+1 秒立刻開始接水。若當前接水人數n』不足m, 則只有n』個龍頭供水,其它m−n』個龍頭關閉。 現在給出n 名同學的接水量,按照上述接水規則,問所有同學都接完水需要多少秒。
第1 行2 個整數n 和m,用乙個空格隔開,分別表示接水人數和龍頭個數。 第2 行n 個整數w1、w2、……、wn,每兩個整數之間用乙個空格隔開,wi 表示i 號同 學的接水量資料規模和約定 1 ≤ n ≤ 10000,1 ≤m≤ 100 且m≤ n; 1 ≤ wi ≤ 100。
輸出只有一行,1 個整數,表示接水所需的總時間。
5 3
4 4 1 2 1
4輸入輸出樣例 1 說明
第1 秒,3 人接水。第1 秒結束時,1、2、3 號同學每人的已接水量為1,3 號同學接完水,4 號同學接替3 號同學開始接水。
第2 秒,3 人接水。第2 秒結束時,1、2 號同學每人的已接水量為2,4 號同學的已接水量為1。
第3 秒,3 人接水。第3 秒結束時,1、2 號同學每人的已接水量為3,4 號同學的已接水量為2。4 號同學接完水,5 號同學接替4 號同學開始接水。
第4 秒,3 人接水。第4 秒結束時,1、2 號同學每人的已接水量為4,5 號同學的已接水量為1。1、2、5 號同學接完水,即所有人完成接水
總接水時間為4秒
【解析】
分開處理,當水龍頭數大於等於人數的時候只需判斷序列中哪個最大就可以了,如果人數大於水龍頭數我們就模擬,剛開始是m個人開始接水,然後接水最少的那個人走了之後下乙個開始接了,這樣一直處理每次都要排序一次現在接好水的人當中那個是最快接好的,再給那個位置的水量加上去。到最大水量的水龍頭就是需要的時間了。
#include#include#include#includeusing namespace std;
int a[10010];
int b[10010];
int main()
{ int n,m,i,max1=0;
scanf("%d%d",&n,&m);
for(i=0;i
接水問題 二
n個人一起排隊接水,第i個人的重要性是a i 需要b i 的時間來接水。1 n 100000 0 b i 1000 0 a i 1000 同時只能有乙個人接水,正在接水的人和沒有接水的人都需要等待。完成接水的人會立刻消失,不會繼續等待。你可以決定所有人接水的順序,並希望最小化所有人等待時間乘以自己的...
接水問題 題解
學校裡有乙個水房,水房裡一共裝有 m mm 個龍頭可供同學們開啟水,每個龍頭每秒鐘的供水量相等,均為 111。現在有 n nn 名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從 1 11 到 n nn 編號,i ii 號同學的接水量為 w iw i wi 接水開始時,1 11 到 ...
1233 接水問題
題目描述 學校裡有乙個水房,水房裡一共裝有m個龍頭可供同學們開啟水,每個龍頭每秒鐘的供水量相等,均為1。現在有n名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從1到n編號,i號同學的接水量為wi。接水開始時,1到m號同學各佔乙個水龍頭,並同時開啟水龍頭接水。當其中某名同學j完成其接...