椰程信奥 · 说课稿
单文件互动课件 14 页 · 2 个模拟器 · 两道真题(RANGE / CUBERT)
一、教材与学情
课题专题7 · 二分(一)—— 从查找到浮点
课时1 课时(45 分钟)
对应真题数的范围(整数二分)、数的三次方根(浮点二分)
学生多半「听说过二分」但写不对:两套模板混用、忘记验证、浮点题沿用整数写法。本讲不追求多做题,而是把模板讲成肌肉记忆。
二、教学目标
知道
能说出二分的两条前提、两套模板与各自的 mid 取整方式。
理解
能解释「为什么 l=mid 时 mid 必须上取整」,以及「为什么整数二分找到后必须验证」。
应用
能独立完成数的范围与数的三次方根。
三、教学流程
「1 亿个数里找一个,顺序查找要 1 亿次,二分只要 27 次。这就是差距。」(第 2 页)
先用数量级冲击建立动机,再点明二分的两条前提。特别强调:写不出二分往往不是模板问题,而是单调性没找对。
「左闭右闭和左闭右开都能写对,但混着写一定错。」(第 3 页)
并排展示两套模型,让学生自己找出「±1 的差别在哪」。这一步让他们理解收缩步长由区间是否包含端点决定,而不是死记。
「判断要不要 +1,只看一件事:check 成立时是 l = mid 还是 r = mid。」(第 4 页)
这是本讲最重要的口诀。我会现场演示:取下取整 + l=mid → 区间卡死不动 → 死循环。让学生亲眼看到卡住,比讲十遍有效。
「二分不会告诉你『存不存在』,它只告诉你『该插在哪』。所以找到了也要回头验一眼。」(第 6–7 页)
用「查 5」这个不存在的样例演示:若不验证,会返回错误下标。第 5 页模拟器正好有这个预设。
「浮点题没有『相邻』,所以不能用 l<=r,要用精度说话。」(第 8–9 页)
第 10 页的收敛模拟器把区间画成进度条,学生能直观看到橙色区间如何指数级收敛到绿色答案线,理解「为什么 60 次就够」。
四、板书设计
前提:单调 + 可判左右
模板①(找最小):l<r mid=(l+r)/2 check→r=mid else l=mid+1
模板②(找最大):l<r mid=(l+r+1)/2 check→l=mid else r=mid-1
浮点:while(r-l>1e-8) r=mid / l=mid fixed<<setprecision(6)
整数二分必做:找到后验证 a[ans]==q
五、亮点与反思
亮点一:把「要不要 +1」提炼成一句话判据。学生不再背两个模板,而是看 check 分支现推,正确率显著提升。
亮点二:两个模拟器分别可视化「指针移动」与「区间收敛」。整数二分看指针,浮点二分看区间宽度,各用最合适的呈现方式。
可改进:STL 的 lower_bound / upper_bound 只做了口头介绍。下次可安排一个「手写 vs STL」的对照上机环节。