GESP 五级 · GESP 202512 C++ 五级 第 12 题

选择题 · 答案 A · 考点:二分查找

← 整套速查表 GESP 五级 全部真题

题目

小杨要把一根长度为 $ 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;
}

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;
答案:A

考点

二分查找 讲解 →二分查找 真题汇总 →

解题思维

进制转换:任意进制→十进制用按权展开;十进制→任意进制用除基取余法。注意十六进制中A-F表示10-15。

常见错误

进制转换中注意十六进制的A-F表示10-15。二进制转八进制三位一组,转十六进制四位一组。

详细解析(节选)

【考点】二分查找答案|单调性判断|区间收缩策略

1. 🎯 考纲定位

本题对应《GESP 五级大纲》第 4 章"算法与程序设计"中二分查找模块。命题人专门考这道题,就是要卡住那些只会背模板、不真正理解二分搜索区间收缩逻辑的考生——50% 的人能把 check 函数写对,但全部倒在 l 和 r 的更新方向上。

同考点真题

在 OI伴学 里做这道题
登录后可计时作答、查看完整六段式解析,并按你的错题自动生成同类练习。
去刷题先做一次 AI 学情诊断