GESP 五级 · GESP 202606 C++ 五级 第 10 题

选择题 · 答案 B · 考点:二分查找、函数

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

题目

有若干根木头,长度存于 wood。每切一刀可以把一段木头分成两段。函数 check(wood, K, x) 返回:用不超过 K 刀,能否使所有木段长度都不超过 x。下面代码使用二分答案查找最小可行的 x,横线处应填( )。

int binary_cut(vector<int>& wood, int K) {
    int l = 1;
    int r = 0;
    for (int len : wood) r = max(r, len);
    while (l < r) {
        int mid = l + (r - l) / 2;
        if (check(wood, K, mid))
            ________________; // 在此处填入代码
        else l = mid + 1;
    }
    return l;
}
答案:B

考点

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

解题思维

STL 容器:vector(动态数组)、set/map(红黑树,有序)、unordered_set/map(哈希表,无序)。注意迭代器失效问题。

常见错误

填空时注意语法完整性:分号、括号匹配、函数参数类型和个数、返回值类型。

详细解析(节选)

【考点】二分查找|check 函数的贪心策略|最小值问题

1. 🎯 考纲定位

本题出自 GESP 五级 C++ 算法模块,核心是「二分答案」模型。命题人卡住的是考生对二分边界收缩方向的理解——五级考生常混淆「可行解区间」与「最优解位置」的关系,把最小值问题当成普通二分处理。

同考点真题

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