演算法題 分巧克力(Python)

2021-10-14 18:41:58 字數 1031 閱讀 6203

兒童節那天有 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≤10^5

1≤hi,wi≤10^5

輸入樣例:

2 10

6 55 6

輸出樣例:

2
n, k = map(int, input().split())

max = 0

cakes =

for _ in range(n):

w, h = map(int, input().split())

max = max(max, w, h)

def cal(size):

cnt = 0

for w, h in cakes:

cnt += (h // size) * (w // size)

return cnt

l, r = 0, max

while l < r:

mid = l + r + 1 >> 1

if cal(mid) >= k: l = mid

else: r = mid - 1

print(l)

第九題 分巧克力

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

分巧克力(刷題賽)

reference include includeusing namespace std 使得將巧克力按照邊長maxx進行切分 切分成的份數要大於等於k,而如果按照maxx 1進行切割 將不再能夠切出k塊。如果從1 100000逐個查詢,那麼肯定超時,所以採用二分查詢。int n,k,a 11000...

每日一題 分巧克力

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