「二分查找」在信息学竞赛真题中出现 66 次,覆盖 NOIP 普及组 初赛、NOIP 提高组 初赛、CSP 入门级、CSP 提高级、GESP 五级、GESP 六级、GESP 七级、GESP 八级。下面按考试级别列出每一道题的题号、答案与一句话解题思路,可以按考点横向刷,也可以顺着套卷纵向练。
怎么用这一页:先看下面的「命中题目速查」,挑 2~3 道做;做完对照每题的「常见错误」检查自己是不是踩了同一个坑;同一个考点连续错两次,就去知识点精讲把规则补齐再回来刷。
-
第 2 题
答案:C
· 选择题 · GESP 五级样题(C++ 组)
这道题考二分查找的最坏情况步数。拿到1到100这个范围,先想每次猜中点能砍掉一半区间,再算2的几次方才够盖住100,向上取整就是答案。
看完整解析 →
-
第 6 题
答案:D
· 选择题 · GESP 五级样题(C++ 组)
二分查找的核心是区间折半,别光背复杂度,拿到题就动手模拟:每次循环看 mid 怎么算、left 和 right 怎么变,数一数 while 循环体到底执行了几次,就能把四个选项逐个验明正身。
看完整解析 →
-
第 25 题
答案:B
· 判断题 · GESP 五级样题(C++ 组)
这题考二分查找的适用前提,拿到题先想二分法的核心逻辑是什么,再对照题干条件判断是否成立。
看完整解析 →
-
第 19 题
答案:B
· 判断题 · GESP 202309 C++ 五级
拿到题先想:二分查找的核心操作是什么?它依赖数据结构的什么特性?链表能支持这个特性吗?
看完整解析 →
-
第 9 题
答案:D
· 选择题 · GESP 202312 C++ 五级
这题考的是算法思想的辨析,别被递归函数名带偏,抓住‘子问题是否重叠’这个核心判据,就能一眼看出它只是分治递归,绝不是动态规划。
看完整解析 →
-
第 10 题
答案:B
· 选择题 · GESP 202312 C++ 五级
这题其实就考一个核心直觉:二分每次把范围砍一半,N 到 1 需要砍多少次?次数就是 log₂N,所以复杂度是 O(log N)。
看完整解析 →
-
第 14 题
答案:C
· 选择题 · GESP 202312 C++ 五级
这题考的是算法适用场景,核心在于理解‘判断’与‘查找’的本质区别。拿到题先想:二分法能直接用来判定素数吗?显然不能,它得依赖一个已经排好序的素数表。既然表是现成的,那‘判断’就失去了意义,逻辑上根本站不住脚。
看完整解析 →
-
第 8 题
答案:D
· 选择题 · GESP 202403 C++ 五级
STL 容器:vector(动态数组)、set/map(红黑树,有序)、unordered_set/map(哈希表,无序)。注意迭代器失效问题。
看完整解析 →
-
第 18 题
答案:A
· 判断题 · GESP 202403 C++ 五级
二分查找每次将搜索范围减半,仅适用于有序序列。注意边界条件的处理(左闭右开或左闭右闭)。
看完整解析 →
-
第 11 题
答案:C
· 选择题 · GESP 202406 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 13 题
答案:C
· 选择题 · GESP 202409 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 23 题
答案:A
· 判断题 · GESP 202409 C++ 五级
二分查找每次将搜索范围减半,仅适用于有序序列。注意边界条件的处理(左闭右开或左闭右闭)。
看完整解析 →
-
第 11 题
答案:C
· 选择题 · GESP 202412 C++ 五级
分析时间复杂度时关注循环层数和每层迭代次数,递归算法则分析递归树。注意最坏/最好/平均情况的区别。
看完整解析 →
-
第 12 题
答案:B
· 选择题 · GESP 202412 C++ 五级
根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
看完整解析 →
-
第 23 题
答案:A
· 判断题 · GESP 202412 C++ 五级
链表不支持随机访问,不能进行二分查找。二分查找要求数据结构支持O(1)的随机访问(如数组)。
看完整解析 →
-
第 24 题
答案:A
· 判断题 · GESP 202412 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 11 题
答案:C
· 选择题 · GESP 202503 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 12 题
答案:A
· 选择题 · GESP 202503 C++ 五级
根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
看完整解析 →
-
第 23 题
答案:B
· 判断题 · GESP 202503 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 11 题
答案:A
· 选择题 · GESP 202506 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 12 题
答案:D
· 选择题 · GESP 202506 C++ 五级
位运算:&(与)、 (或)、^(异或)、~(取反)、<<(左移)、 (右移)。异或性质:a^a=0,a^0=a。
看完整解析 →
-
第 21 题
答案:A
· 判断题 · GESP 202506 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 10 题
答案:C
· 选择题 · GESP 202509 C++ 五级
STL 容器:vector(动态数组)、set/map(红黑树,有序)、unordered_set/map(哈希表,无序)。注意迭代器失效问题。
看完整解析 →
-
第 20 题
答案:A
· 判断题 · GESP 202509 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 11 题
答案:A
· 选择题 · GESP 202512 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 12 题
答案:A
· 选择题 · GESP 202512 C++ 五级
进制转换:任意进制→十进制用按权展开;十进制→任意进制用除基取余法。注意十六进制中A F表示10 15。
看完整解析 →
-
第 20 题
答案:A
· 判断题 · GESP 202512 C++ 五级
比较不同排序算法的核心区别:冒泡(相邻交换)、选择(选最值)、插入(插入有序序列)、归并(分治合并)、快排(划分递归)。
看完整解析 →
-
第 8 题
答案:A
· 选择题 · GESP 202603 C++ 五级
根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
看完整解析 →
-
第 17 题
答案:A
· 判断题 · GESP 202603 C++ 五级
仔细审题,明确已知条件和所求目标,运用相关知识点逐项分析。
看完整解析 →
-
第 9 题
答案:C
· 选择题 · GESP 202606 C++ 五级
根据上下文和C++语法规则确定空缺处应填的内容,关注函数调用参数、表达式和返回值类型。
看完整解析 →
-
第 10 题
答案:B
· 选择题 · GESP 202606 C++ 五级
STL 容器:vector(动态数组)、set/map(红黑树,有序)、unordered_set/map(哈希表,无序)。注意迭代器失效问题。
看完整解析 →
-
第 22 题
答案:B
· 判断题 · GESP 202606 C++ 五级
链表不支持随机访问,不能进行二分查找。二分查找要求数据结构支持O(1)的随机访问(如数组)。
看完整解析 →
-
第 9 题
答案:C
· 选择题 · GESP202609 C++ 五级
二分查找框架,维护区间 [l,r) 表示答案一定在此范围内。每次取中点 mid,根据 a[mid] 与 x 的关系决定答案在左半还是右半:若 a[mid] 满足"太小"条件,则 l=mid+1 向右收缩;否则 r=mid…
看完整解析 →
-
第 10 题
答案:B
· 选择题 · GESP202609 C++ 五级
看到 check(mid) 判断,立刻想到二分答案。l 是下界,r 是上界,mid 是中间值。check(mid) 为真说明 mid 可行,但可能还有更小的可行值,要把上界缩到 mid;为假说明 mid 太小,下界要跳到…
看完整解析 →
-
第 21 题
答案:A
· 判断题 · GESP202609 C++ 五级
看到题先想二分查找,因为数组已排序。关键观察是当 a[mid] <= x 时,记录 ans 并继续向右,否则向左。每一步推理的依据是二分查找的不变量:答案在 [l, r] 范围内,且 ans 记录当前找到的最后一个满足条…
看完整解析 →