接水問題(這題可能有點水)

2021-06-20 23:25:28 字數 2001 閱讀 9325

演算法訓練 接水問題  

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

問題描述

學校裡有乙個水房,水房裡一共裝有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 34 4 1 2 1

樣例輸出 4

樣例輸入

8 423 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。

本題為模擬題, 但是真心不難。。。

第乙個**(90分):注釋部分百思不得其解,為什麼去掉才是對的。。。若有告知,不勝感激

# include # include using namespace std;

int c[11111];

int cmp(int a, int b)

int main()

if (c[m] <= 0)/* 就這個if 了,,真心不懂 *///

/c[1] = c[k+1];

if (k+1 == n)

k++;}}

else

printf("%d", max(n));

return 0;

}

下面是正確**(即去掉上面有注釋的部分):

# include # include using namespace std;

int c[11111];

int cmp(int a, int b)

int main()

c[1] = c[k+1];

if (k+1 == n)

k++;}}

else

printf("%d", max(n));

return 0;

}

我的解題思想是:

如果n<=m, 那麼多個水龍頭同時供水,也就是直接輸出最水的那個人要打的水所花費的時間。

那如果n>m, 就有人要等待了賽,就把前m 個人要接的水排序嘛,由小到大,那第乙個人打完了水,接著就取第m+1個人的,替換到c[1]上來。再排序,c[1]完了再替換,依次下去,,,直到c[m]為0,就結束了。

這裡有乙個小優化,就是如果已經沒有人等了,那我們就直接輸出最水的(不用再計算了)對吧?

今天可能有點衰

會同學 上午去廣州找乙個小學一直到高中的同學,昨天跟他約好的,他說今天到了給他 誰知道這個傢伙放我鴿子,我在賽馬場等了他1個小時,手機一直關機,從我這裡到那裡坐公汽得差不多兩個小時呢,幸好這兩天天氣轉涼,不然我可饒不了他。下午兩點過他才發簡訊說剛起床,真是個混蛋。本來打算是先會了他再去白雲區見另乙個...

c 模板類學習 例子編譯可能有問題 注

1 模板的概念 我們已經學過過載 overloading 對過載函式而言,c 的檢查機制能通過函式引數的不同及所屬類的不同。正確的呼叫過載函式。例如,為求兩個數的最大值,我們定義max 函式需要對不同的資料型別分別定義不同過載 overload 版本。函式1.int max int x,int y ...

專案管理中可能有的問題,以及如何去面對

專案管理中,一些問題如何去解決?問題有如下 1。如何真正的理解客戶的需求 2。需求總是在變化,使用者今天看到你的需求說明書及演示介面認為不錯,過了幾天卻提出要加入新需求,再過幾天又加點東西,到最後這個軟體與開始的那個版本相差很大,成了垃圾系統?3。每次的需求變更都是口頭描述,沒有形成文件,即使形成文...