会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
把每个数除以除数 d 再向上取整后求和,要求这个和不超过 threshold,求最小的正整数 d。
- 除数变大时,每一项 ⌈numsi/d⌉ 只减不增,总和也单调不增,因此满足阈值的 d 构成一段后缀。
- d=1 时和最大,d=max(nums) 时每一项都是 1,和等于 n,而 threshold≥n,所以一定有解,搜索区间取 [1,max(nums)] 即可。
- 判定:对固定 d,用 (x+d−1)/d 算向上取整。和可能到 n×106,要用 64 位整数。
- 常见假解:向下取整、二分写反(找最大而不是最小)、用
int 累加溢出。