GESP C++ 真题 · 逐题精解
首页C++五级真题 › 2026年6月 › 第10题

GESP 2026年6月 C++五级 单选题 第10题

C++五级单选题2026年6月第10题

所属知识点:排序算法 难度要求:掌握 考频:—

有若干根木头,长度存于 wood 。每切一刀把一段分成两段,函数 check(wood, K, x) 返回「用不超过 K 刀能否使所有木段长度都不超过 x」。下面代码用二分答案查找最小可行的 x ,横线处应填( )。
int binary_cut(vector<int>& wood, int K) {
    int l = 1, 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

题目解析
要找「最小的可行 x」:若 mid 可行,更小的也许还可行,但 mid 本身要保留为候选,故收缩右界 r = mid;不可行才 l = mid + 1,选 B。💡 二分答案找最小值的模板:check 成功 → r = mid,失败 → l = mid + 1。

想系统刷完 GESP C++ 1~8 级真题,并查看每道题的逐题精讲?

进入 GESPPASS 开始练习