接水问题(信息学奥赛一本通-T1233)
【題目描述】
學(xué)校里有一個(gè)水房,水房里一共裝有m個(gè)龍頭可供同學(xué)們打開水,每個(gè)龍頭每秒鐘的供水量相等,均為1。
現(xiàn)在有n名同學(xué)準(zhǔn)備接水,他們的初始接水順序已經(jīng)確定。將這些同學(xué)按接水順序從1到n編號(hào),i號(hào)同學(xué)的接水量為wi。接水開始時(shí),1到m號(hào)同學(xué)各占一個(gè)水龍頭,并同時(shí)打開水龍頭接水。當(dāng)其中某名同學(xué)j完成其接水量要求wj后,下一名排隊(duì)等候接水的同學(xué)k馬上接替j同學(xué)的位置開始接水。這個(gè)換人的過程是瞬間完成的,且沒有任何水的浪費(fèi)。即j同學(xué)第x秒結(jié)束時(shí)完成接水,則k同學(xué)第x+1 秒立刻開始接水。 若當(dāng)前接水人數(shù)n’不足m,則只有n’個(gè)龍頭供水,其它m-n’個(gè)龍頭關(guān)閉。
現(xiàn)在給出n名同學(xué)的接水量,按照上述接水規(guī)則,問所有同學(xué)都接完水需要多少秒。
【輸入】
第1行2個(gè)整數(shù)n和m,用一個(gè)空格隔開,分別表示接水人數(shù)和龍頭個(gè)數(shù)。
第2 行n個(gè)整數(shù) w1、w2、……、wn,每?jī)蓚€(gè)整數(shù)之間用一個(gè)空格隔開,wi表示 i 號(hào)同學(xué)的接水量。
【輸出】
輸出只有一行,1個(gè)整數(shù),表示接水所需的總時(shí)間。
【輸入樣例】
5 3
4 4 1 2 1
【輸出樣例】
4
【源程序】
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> #include<algorithm> #define INF 999999999 #define N 10001 using namespace std; int a[N],s[101]; int main() {int n,m;int k;cin>>n>>m;for(int i=1;i<=n;i++)cin>>a[i];for(int i=1;i<=n;i++){int min=INF;for(int j=1;j<=m;j++)if(s[j]<min){min=s[j];k=j;}s[k]+=a[i];}int max=-INF;for(int i=1;i<=m;i++)if(s[i]>max)max=s[i];cout<<max<<endl;return 0; }總結(jié)
以上是生活随笔為你收集整理的接水问题(信息学奥赛一本通-T1233)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 小兔的棋盘(HDU-2067)
- 下一篇: 金银岛(信息学奥赛一本通-T1225)