演算法訓練 接水問題

2021-07-30 20:43:11 字數 1460 閱讀 7389

演算法訓練 接水問題

時間限制:1.0s 記憶體限制:64.0mb

提交此題 錦囊1 錦囊2

問題描述

學校裡有乙個水房,水房裡一共裝有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 個整數,表示接水所需的總時間。

樣例輸入

5 3

4 4 1 2 1

樣例輸出

4 樣例輸入

8 4

23 71 87 32 70 93 80 76

樣例輸出

163

輸入輸出樣例 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 秒。

資料規模和約定

1 ≤ n ≤ 10000,1 ≤m≤ 100 且m≤ n;

1 ≤ wi ≤ 100。

#include

#include

using

namespace

std;

int w[10004],m1[105];

int main()

for (int i=0;iwhile(t<=n)

}time+=minnum;

}maxnum=*max_element(m1,m1+m);//最後加上接的最多的人時間

time+=maxnum;

cout

0;}

演算法訓練 接水問題

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

演算法訓練 接水問題

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

演算法訓練 接水問題

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