藍橋杯 分巧克力 二分查詢

2021-10-01 20:45:10 字數 1301 閱讀 3527

兒童節那天有 k 位小朋友到小明家做客。

小明拿出了珍藏的巧克力招待小朋友們。

小明一共有 n 塊巧克力,其中第 i 塊是 hi×wi 的方格組成的長方形。

為了公平起見,小明需要從這 n 塊巧克力中切出 k 塊巧克力分給小朋友們。

切出的巧克力需要滿足:

形狀是正方形,邊長是整數

大小相同

例如一塊 6×5 的巧克力可以切出 6 塊 2×2 的巧克力或者 2 塊 3×3 的巧克力。

當然小朋友們都希望得到的巧克力盡可能大,你能幫小明計算出最大的邊長是多少麼?

輸入格式

第一行包含兩個整數 n 和 k。

以下 n 行每行包含兩個整數 hi 和 wi。

輸入保證每位小朋友至少能獲得一塊 1×1 的巧克力。

輸出格式

輸出切出的正方形巧克力最大可能的邊長。

資料範圍

1≤n,k≤105,

1≤hi,wi≤105

輸入樣例:

2 10

6 55 6

輸出樣例:

2
要分到的巧克力都是正方形的,但是輸入的資料是有長方形的巧克力,所以肯定是有剩餘的部分,就是說不能拼湊,只能切割

那麼我們每次如果固定了乙個邊長,就確定了當前的某一塊巧克力可以切割成多少塊這個固定邊長的巧克力:

(寬度 / 邊長)~下取整~  * (高度 / 邊長)~下取整~
那麼我們便可以列舉每乙個邊長,來找到可以分給所有小朋友並且邊長最大的那乙個,用二分的方法來寫讓時間複雜度減小。**如下:

#include

#include

#include

#include

using

namespace std;

const

int n =

100010

;int n, m;

int h[n]

, w[n]

;//存放每乙個巧克力的高度和寬度

//判斷當前這個正方形的寬度能否讓所有的小朋友都分到巧克力

bool

check

(int mid)

return

false;}

intmain()

printf

("%d\n"

, l)

;return0;

}

藍橋杯 分巧克力 二分思想

題目描述 兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力需要滿足 1.形狀是正方形,邊長是整數 2.大小相同 例如一塊6x5...

藍橋杯 分巧克力(二分搜尋)

歷屆試題 分巧克力 時間限制 1.0s 記憶體限制 256.0mb 問題描述 兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力...

藍橋杯 分巧克力(二分答案)

時間限制 1.0s 記憶體限制 256.0mb 問題描述 兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。小明一共有n塊巧克力,其中第i塊是hi x wi的方格組成的長方形。為了公平起見,小明需要從這 n 塊巧克力中切出k塊巧克力分給小朋友們。切出的巧克力需要滿足 1.形狀是...