题目分析
题目要求将 n
块巧克力(每块尺寸为 a_i × b_i
)分成 m
个相同大小的正方形巧克力,且每个正方形的边长尽可能大。
换句话说,我们需要找到一个最大的整数 mid
,使得所有巧克力可以切割出至少 m
个 mid × mid
的正方形。
代码思路
-
二分查找(Binary Search)
-
目标是找到最大的
mid
(正方形边长),使得sum = ∑(a_i / mid) * (b_i / mid) ≥ m
。 -
由于
mid
越大,sum
越小,所以可以使用二分法在[0, Max(a_i, b_i)]
范围内查找。
-
-
关键变量
-
n
:巧克力数量。 -
m
:小朋友数量。 -
c[i].a
和c[i].b
:第i
块巧克力的长和宽。 -
<Max
:所有巧克力中的最大边长(用于确定二分上限)。
-