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

2021-10-03 07:37:46 字數 2053 閱讀 2564

題目描述

學校裡有乙個水房,水房裡一共裝有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 說明

第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。

輸入

第1 行2 個整數n 和m,用乙個空格隔開,分別表示接水人數和龍頭個數。 第2 行n 個整數w1、w2、……、wn,每兩個整數之間用乙個空格隔開,wi 表示i 號同 學的接水量。

輸出

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

樣例輸入

8 423 71 87 32 70 93 80 76

5 34 4 1 2 1

樣例輸出

1634

做的思路有很多種,我推薦最容易理解的一種

就拿第二組樣例來說,只有三個水龍頭,就是說三個人同時放水

(4,4,1)同時放一秒(3,3,0)

有0出現了,就要換下乙個同學

(3,3,0)->(3,3,2)

這時可以同時放兩秒才會有0出現

(3,3,2)->(1,1,0)

有0出現,換人

(1,1,0)->(1,1,1)

最後一秒 總共4秒

第一組樣例一樣

(23,71,87,32)->(0,48,64,9)->(70,48,64,9)->(61,39,55,0)->(61,39,55,93)->…………

思路很簡單,那麼怎麼解決呢(n個人,m個水龍頭)

就和思路一樣的,前m個數一直-1直到出現0然後和後面的換

也可以先把前m個數從小到大排序,然後都減去第乙個數(最小的數),再和後面的換,but這樣有點麻煩,不推薦

減的話需要每個數都減,那加呢?加只要最小的數加就行了,所以更簡單。

思路就是找前m個數中最小的,然後依次加上m後面的所有數(找一次最小就加一次,直到所有數都被加過),最後在找出前m個數中的最大值(因為所有人的水都要放完才行)。

就拿第二個例子舉例

本來(4,4,1)變成(3,3,0)然後+2(3,3,2)

看成(4,4,1)直接+2(4,4,3)等價於(3,3,2)(因為每次都求最小而已,可以等價)

接下來就上**了

#includeusing namespace std;

int main()

; scanf("%d%d",&n,&m);

for(i=0;ia[i]?time:a[i];

} printf("%d\n",time);

}

藍橋杯接水問題

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

藍橋杯 密碼脫落問題 遞迴思路

密碼脫落 x星球的考古學家發現了一批古代留下來的密碼。這些密碼是由a b c d 四種植物的種子串成的序列。仔細分析發現,這些密碼串當初應該是前後對稱的 也就是我們說的映象串 由於年代久遠,其中許多種子脫落了,因而可能會失去映象的特徵。你的任務是 給定乙個現在看到的密碼串,計算一下從當初的狀態,它要...

freeradius原始碼安裝及相關問題解釋

當前版本基於 2.1.12 安裝freeradius configure make make install 原始碼安裝完畢後 執行除錯模式 radiusd x 成功執行就表示安裝好了 配置檔案目錄 usr local etc raddb 執行radius遇到的問題 安裝後出現類似的問題 問題一 r...