牛客練習賽63 牛牛的揠苗助長 二分)

2021-10-06 02:10:53 字數 1824 閱讀 6555

題目傳送門

牛牛有一塊長度大小為n的菜園,他首先對這塊菜園從1到n進行了編號,每一塊地分別為1號、2號…n號菜地,然後他往每塊菜地中都種下了一些水稻,一開始,第i塊菜地中的水稻高度均為a[i]個單位。然後我們知道水稻的生長週期都是n天,也就是說每逢n天水稻就會長高乙個單位。但是不巧的是整個菜園中每一塊菜地的生長週期都錯開了,具體來說,第1天的時候第1塊菜地中的水稻長高乙個單位,第2天的時候第2塊菜地中的水稻長高乙個單位…第n天的時候第n塊菜地中的水稻長高乙個單位,接下來第n+1天,又輪到第1塊菜地中的水稻長高乙個單位以此類推。

每天在水稻進行自然生長之後,牛牛可以施展他神奇的魔法,這個魔法可以讓任意一塊菜地中的水稻長高乙個單位,或者讓任意一塊菜地中的水稻縮短乙個單位,當然啦,他也可以不進行任何操作。

牛牛看到菜園中的水稻參差不齊十分難受,請問至少在第幾天,他能夠讓所有的水稻都長到同乙個高度?

輸入描述:

第一行是乙個正整數n (0-1e5)

表示有菜園有n塊菜地。

接下來一行輸入n個正整數,表示每塊菜地上水稻的高度

保證一開始輸入時水稻的高度不全都相同(資料保證答案至少為1)。

輸出描述:

輸出乙個正整數表示問題的答案。

示例1輸入

3

1 2 3

輸出

說明

第一天,第一塊菜地的水稻高度增加1,牛牛使用他的魔法使得第三塊菜地的水稻再減少1。

此時三塊水稻的高度為2 2 2.所有水稻的高度均相同。所以答案為1天。

思路:很明顯的是對天數進行二分搜尋,但是我們怎麼判斷給定的乙個天數是不是可以讓其對齊呢,這裡我們先讓每一株水稻加上這n填迴圈的次數,假設我們此時判斷的是day天數時是不是滿足條件,那麼在這day天裡我們所有的水稻都要增長day/n 單位高度,然後前day%n 個水稻是要在這基礎上再增加1,然後這時候所有的水稻還是層次不齊的,但是我們還有day次操作,那因為是參差不齊的,我們想讓水稻通過施魔法之後變得等高,當某一刻變成等高的時候,無論後面哪個長乙個單位我們都可以用魔法讓它變成等高時候的高度,然後這裡有乙個數學定理:數列各個數到中位數的距離和最小,就是說我們對所有的水稻施魔法,讓它變成最中間的那個水稻的高度,然後這樣總的施魔法次數就是最小的,然後我們一共可以施day次魔法,所以就那總的次數跟day作比較即可。拿官方題解的乙個圖,更形象的說明一下!

}謝謝您訪問我的部落格!

牛客練習賽63 C牛牛的揠苗助長 二分

題目 假設有n天,每天,小麥會按照下標依次增長1個單位,第一天第乙個小麥長,第二天第二個小麥,第n 1天第乙個小麥長。牛牛可以在每天操作,使得任意小麥長1單位或減1單位,求最小的n,使得所有小麥都相同長度 首先想到二分,對天數進行二分,然後已知t天,開始對小麥操作 對於cnt t n天,是對前cnt...

牛客練習賽63 B牛牛的魚缸

題目描述 牛牛有乙個長為l,寬為1,高為h的魚缸,現在他想要在魚缸中盛一些水。他想要知道這個魚缸最多能夠放多少水。當然這個問題太過於簡單,所以牛牛將這個魚缸放到了乙個長為l,高為h的斜坡上面,如圖所示,魚缸寬度為1的這條邊緊緊靠在斜坡與地面的交界線上。在不允許移動魚缸與斜坡的情況下。魚缸最多能夠放多...

牛客練習賽63 牛牛的樹行棋

題意如上 思路 很好的一道樹上博弈。首先需要看出來是sg博弈 並且知道sg博弈 知道之後 如果能猜到sg函式的表示就差不多啦,結論是 sg x 到達子樹中最深的葉子節點的長度。那麼怎麼猜呢?葉子節點無法在向下延伸,sg 0.那麼葉子節點的father只能向下延伸一步,合理的猜想過後sg 1。之後ba...