#3555. [GESP202512 五级 C++] 第 12 题
[GESP202512 五级 C++] 第 12 题
小杨要把一根长度为 L 的木头切成 K 段,使得每段长度小于等于 x。已知每切一刀只能把一段木头分成两段,他用二分法找到满足条件的最小 x(x 为正整数),则横线处应填写( )。
// 判断: 在不超过 K 次切割内, 是否能让每段长度 <= x
bool check(int L, int K, int x) {
int cuts = (L - 1) / x;
return cuts <= K;
}
// 二分查找最小可行的 x
int binary_cut(int L, int K) {
int l = 1, r = L;
while (l < r) {
int mid = l + (r - l) / 2;
________________________________ // 在此处填入代码
}
return l;
}
int main() {
int L = 10; // 木头长度
int K = 2; // 最多切 K 刀
cout << binary_cut(L, K) << endl;
return 0;
}
{{ select(1) }}
- A:
if (check(L, K, mid)) r = mid; else l = mid + 1; - B:
if (check(L, K, mid)) r = mid+1; else l = mid + 1; - C:
if (check(L, K, mid)) r = mid + 1; else l = mid - 1; - D:
if (check(L, K, mid)) r = mid + 1; else l = mid;