藍橋杯接水問題

2021-10-16 13:09:09 字數 1121 閱讀 3341

學校裡有乙個水房,水房裡一共裝有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 號同 學的接水量。

輸入樣例:

5 34 4 1 2 1

輸出輸出描述:

輸出只有一行,1 個整數,表示接水所需的總時間。

輸出樣例:

4目前接水順序是確定了的,且所用時間=接水量,舉乙個例子,我們為第乙個同學挑水管時,從第一根開始,這時的時間都是0,所以安排在1號水管即可,同時1號水管要加上同學1的接水量。接著為同學2挑水管,比較時,這時發現水管2為零,便安排在水管2,同時2號水管要加上同學2的接水量,依次推下去,將下乙個接水的同學安排預計接水量最小的那個水管即可。最後,比較所有水管的接水量,輸出最大的那個。

#include

int stu[

10001

],pipe[

101]=;

int i,j,tem,n,m;

int main()

//開始對每個學生安排水管並計算每個水管接水時間

for( i=

0;ipipe[tem]

+=stu[i];}

//尋找所有水管接水量的最大值

tem=-1

;for

(i=0

;i)printf

("%d"

,tem)

;return0;

//養成return 0的好習慣。

}

藍橋杯 演算法訓練 接水

學校裡有乙個水房,水房裡一共裝有m 個龍頭可供同學們開啟水,每個龍頭每秒鐘的 供水量相等,均為1。現在有n 名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從1 到n 編號,i 號同學的接水量為wi。接水開始時,1 到m 號同學各佔乙個水龍頭,並同時打 開水龍頭接水。當其中某名同學j...

藍橋杯接水問題(思路及原始碼)

題目描述 學校裡有乙個水房,水房裡一共裝有m個龍頭可供同學們開啟水,每個龍頭每秒鐘的供水量相等,均為1。現在有n名同學準備接水,他們的初始接水順序已經確定。將這些同學按接水順序從1到n編號,i號同學的接水量為wi。接水開始時,1到m號同學各佔乙個水龍頭,並同時開啟水龍頭接水。當其中某名同學j完成其接...

藍橋杯 正則問題

題目描述 考慮一種簡單的正規表示式 只由 x 組成的正規表示式。小明想求出這個正規表示式能接受的最長字串的長度。例如 xx x x xx xx 能接受的最長字串是 長度是6 輸入 xx x x xx xx 程式應該輸出 6 思路 遇到 就遞迴呼叫函式,遇到 a 就將計數器x 遇到 就選出左右最大值,...