1 条题解

发布要求:学生须先通过本题;教师和管理员可直接维护官方内容。内容应说明核心思路、关键步骤、正确性理由和复杂度。 只粘贴代码不会通过审核。

你尚未通过该题,通过后才能发布题解。

  • 0
    @ 2072-1-16 2:54:51 官方题解 源题同步

    01|2025-03-L5-TF-08

    学生训练答案:F

    原卷事实

    题面声称二分查找同样适用于无序数组。

    必要假设

    使用基于大小关系舍弃一半区间的普通二分。

    C++11 / 算法语义

    该推理需要单调或有序条件,无序数组不能直接使用。

    命题预期

    判断为假。

    推导结论

    训练答案F。

    02|2025-03-L5-SC-11

    学生训练答案:C

    原卷事实

    候选整数共有100个。

    必要假设

    目标保证在区间内,每次按二分缩小候选集。

    C++11 / 算法语义

    最坏次数为ceil(log2(100+1))=7。

    命题预期

    选择C。

    推导结论

    训练答案C。

    03|2025-06-L5-TF-06

    学生训练答案:T

    原卷事实

    字典按字母顺序排列,每步比较中间页并舍弃不可能的一半。

    必要假设

    把页首字母序视为单调,并允许继续细化到目标页。

    C++11 / 算法语义

    利用有序性反复折半正是二分查找思想。

    命题预期

    判断为真。

    推导结论

    学生训练答案T。

    04|2025-12-L5-TF-05

    学生训练答案:T

    原卷事实

    题面比较一次线性查找与先排序再二分。

    必要假设

    使用比较式查找且无其他排序收益。

    C++11 / 算法语义

    一次线性查找O(n),先排序通常O(n log n)。

    命题预期

    判断为真。

    推导结论

    训练答案T。

    05|2025-03-L5-SC-12

    学生训练答案:A

    原卷事实

    横线需计算left和right的中点。

    必要假设

    left、right为合法索引且left<=right。

    C++11 / 算法语义

    A与数学中点等价,并避免left+right先发生有符号溢出;C在范围足够小时也可运行,但不如A稳健。

    命题预期

    “最佳”选择A。

    推导结论

    训练答案A;解析说明C与A的边界差异。

    06|2025-12-L5-SC-11

    学生训练答案:A

    原卷事实

    区间初始化为[0,arr.size())。

    必要假设

    arr按非降序排列。

    C++11 / 算法语义

    循环维持半开区间不变量,结束时l为首个满足位置或size。

    命题预期

    A正确。

    推导结论

    训练答案A。

    07|2026-03-L5-TF-02

    学生训练答案:T

    原卷事实

    代码维护[l,r)半开区间。

    必要假设

    数组升序。

    C++11 / 算法语义

    a[mid]>=x令r=mid,否则l=mid+1,结束l为答案或size。

    命题预期

    判断为真。

    推导结论

    训练答案T。

    08|2026-03-L5-SC-08

    学生训练答案:A

    原卷事实

    搜索区间为[l,r)。

    必要假设

    数组非降序。

    C++11 / 算法语义

    a[mid]>=x时答案位于左半含mid,故r=mid。

    命题预期

    选择A。

    推导结论

    训练答案A。

    09|2026-06-L5-TF-07

    学生训练答案:F

    原卷事实

    题目声称单链表支持O(1)随机访问。

    必要假设

    按普通单链表。

    C++11 / 算法语义

    访问第k个结点需顺序移动,非O(1),直接套用数组式二分不能保持同样总复杂度。

    命题预期

    判断为F。

    推导结论

    训练答案F。

    10|2026-06-L5-SC-09

    学生训练答案:C

    原卷事实

    搜索区间为[l,r)。

    必要假设

    数组有序。

    C++11 / 算法语义

    a[mid]>=x时答案位于mid或左侧,令r=mid。

    命题预期

    选项C。

    推导结论

    训练答案C。

    11|2025-06-L5-SC-11

    学生训练答案:A

    原卷事实

    升序数组上用上取中点,lst[mid]<=target时保留右半侧。

    必要假设

    lst非空分支中索引合法。

    C++11 / 算法语义

    循环收敛到最后一个<=target的位置,再检查是否等于target;全相同元素也返回末位。B应返回-1,C/D会破坏现有循环结构或收敛。

    命题预期

    选择A。

    推导结论

    学生训练答案A。

    12|2025-06-L5-SC-12

    学生训练答案:D

    原卷事实

    阶段1定位整数平方根区间,阶段2在[k,k+1]内二分。

    必要假设

    要求mid*mid、next_k*next_k和check_int*check_int均可表示;epsilon为正且足够大于机器停滞尺度。

    C++11 / 算法语义

    以区间宽度与epsilon比较是常见浮点终止条件,不会必然死循环;A、B、C描述命题意图。

    命题预期

    错误说法D。

    推导结论

    学生训练答案D;解析显著标注有符号乘法可表示的输入前提。

    13|2025-09-L5-TF-05

    学生训练答案:F(官方答案:T;本题按校注版判题)

    原卷事实

    官网原题与官方答案T永久保留。

    必要假设

    按C++11通用算法与非数组容器讨论。

    C++11 / 算法语义

    标准std::lower_bound只要求ForwardIterator;std::list等非数组容器也可执行,但非随机访问迭代器通常使总时间退化为线性移动。

    命题预期

    官方T体现教材对高效二分的数组型实现口径。

    推导结论

    校注版学生判题F,与官方T不同。

    14|2025-12-L5-SC-12

    学生训练答案:A

    原卷事实

    check随x增大从假变真,目标是最小真值。

    必要假设

    题面代码实际把K解释为最多切K刀;L、K为有效非负范围。

    C++11 / 算法语义

    最小可行二分在check(mid)为真时令r=mid,否则l=mid+1。

    命题预期

    选择A。

    推导结论

    训练答案A;解析显著说明题干“切成K段”与代码注释“最多切K刀”的措辞张力,以代码目标为准。

    15|2026-03-L5-SC-07

    学生训练答案:B

    原卷事实

    数组排序后为1,2,4,8,9,需选3个位置。

    必要假设

    n=5、k=3。

    C++11 / 算法语义

    最小间距3可选1,4,8;间距4最多选2个。

    命题预期

    程序输出3。

    推导结论

    训练答案B。

    16|2026-03-L5-TF-07

    学生训练答案:T

    原卷事实

    程序先排序,再对距离值域二分,每次check线性扫描。

    必要假设

    D代表最大值与最小值的差或同阶上界,算术不溢出。

    C++11 / 算法语义

    排序O(n log n),二分O(log D)轮,每轮O(n)。

    命题预期

    判断为真。

    推导结论

    训练答案T。

    17|2026-03-L5-SC-10

    学生训练答案:A

    原卷事实

    check(mid)为真时记录答案并增大下界。

    必要假设

    n、m有效且至少存在可行正长度。

    C++11 / 算法语义

    最大真值二分:真则l=mid+1,假则r=mid-1。

    命题预期

    选择A。

    推导结论

    训练答案A。

    18|2026-06-L5-SC-10

    学生训练答案:B

    原卷事实

    check(mid)为真表示mid是可行上界。

    必要假设

    wood非空、长度为正且check具单调性。

    C++11 / 算法语义

    寻找最小可行值时保留mid,令r=mid。

    命题预期

    选项B。

    推导结论

    训练答案B。

    19|2025-09-L5-SC-10

    学生训练答案:C

    原卷事实

    原文说countLE返回第k小,但代码中countLE实际返回≤x的元素个数,kthSmallest返回第k小。

    必要假设

    矩阵非空,k合法。

    C++11 / 算法语义

    当countLE(mid)>=k时保留mid作为上界hi=mid;否则lo=mid+1。

    命题预期

    命题预期C。

    推导结论

    训练答案C;解析显著区分原文函数名笔误与代码实际。

    GESP C++ 五级真题客观题|二分查找与二分答案

    信息

    ID
    81
    时间
    1000ms
    内存
    256MiB
    难度
    轻松上手
    标签
    递交数
    0
    已通过
    0
    上传者