分巧克力(二分查詢)

2021-10-08 18:49:14 字數 881 閱讀 4965

題目: 分巧克力

兒童節那天有k位小朋友到小明家做客。小明拿出了珍藏的巧克力招待小朋友們。

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

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

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

2. 大小相同

例如一塊6x5的巧克力可以切出6塊2x2的巧克力或者2塊3x3的巧克力。

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

輸入第一行包含兩個整數n和k。(1 <= n, k <= 100000)

以下n行每行包含兩個整數hi和wi。(1 <= hi, wi <= 100000)

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

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

樣例輸入:

2 10

6 55 6

樣例輸出:

2

思路:二分查詢的變形,利用二分查詢,找到最接近k的長度len。變形的地方在於有多塊巧克力,所以需要在加乙個迴圈累計len長度一共可以切成多少巧克力。

#include

using

namespace std;

intmain()

int r =

100001

;int l=1;

int ans=0;

//二分查詢,查詢最接近k的分割長度len,即mid。

while

(l<=r)

if(cnt >= k)

else

} cout

}

分巧克力 (二分)

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

分巧克力 二分)

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

歷屆試題 分巧克力(二分查詢)

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