LCP 12 小張刷題計畫 二分法的擴充套件

2021-10-05 15:02:24 字數 914 閱讀 7154

提高自己的**能力,小張制定了 leetcode 刷題計畫,他選中了 leetcode 題庫中的 n 道題,編號從 0 到 n-1,並計畫在 m 天內按照題目編號順序刷完所有的題目(注意,小張不能用多天完成同一題)。

在小張刷題計畫中,小張需要用 time[i] 的時間完成編號 i 的題目。此外,小張還可以使用場外求助功能,通過詢問他的好朋友小楊題目的解法,可以省去該題的做題時間。為了防止「小張刷題計畫」變成「小楊刷題計畫」,小張每天最多使用一次求助。

我們定義 m 天中做題時間最多的一天耗時為 t(小楊完成的題目不計入做題總時間)。請你幫小張求出最小的 t是多少。

輸入:time = [1,2,3,3], m = 2

輸出:3

解釋:第一天小張完成前三題,其中第三題找小楊幫忙;第二天完成第四題,並且找小楊幫忙。這樣做題時間最多的一天花費了 3 的時間,並且這個值是最小的。

我們可以想到把所有的題用一天來刷完,剩餘m-1天空閒,此時的t為所有題的時間總和,為最大值;接著將t慢慢的減小,將題量分擔到m天,這裡採用折半的減少,***及二分法***於是可以寫出在減小的t的過程中需要的總天數,若總天數大於m則增加t,直到尋找乙個合適的t。

第一段**為

public

intmintime

(int

time,

int m)

else

}return ans;

}

這裡要編寫checkdays(int time, int mid);函式,及判斷所需要的天數。

public

intcheckdays

(int

time,

int mid)

}return ret;

}

LCP12 小張刷題計畫

題目 題意 將乙個陣列分為m份,其中最大個數的那乙份元素之和t要最小。官方題解 如果不考慮每份可以任意減去乙個元素,就是乙個經典的二分問題,具有單調最優的性質 如果最大值為 t可以滿足條件劃分,那麼最大值為t 1也可以。所以就直接二分最大值t,找到最小滿足條件的t即可。本題加了乙個條件 每份可以刪除...

LCP 12 小張刷題計畫(二分查詢)

1.問題描述 為了提高自己的 能力,小張制定了 leetcode 刷題計畫,他選中了 leetcode 題庫中的 n 道題,編號從 0 到 n 1,並計畫在 m 天內按照題目編號順序刷完所有的題目 注意,小張不能用多天完成同一題 在小張刷題計畫中,小張需要用 time i 的時間完成編號 i 的題目...

LeetCode刷題之路 二分法

分享巧克力 你有一大塊巧克力,它由一些甜度不完全相同的小塊組成。我們用陣列 sweetness 來表示每一小塊的甜度。你打算和 k 名朋友一起分享這塊巧克力,所以你需要將切割 k 次才能得到 k 1 塊,每一塊都由一些 連續 的小塊組成。為了表現出你的慷慨,你將會吃掉 總甜度最小 的一塊,並將其餘幾...