椰程信奥 · 说课稿

单文件互动课件 14 页 · 2 个模拟器 · 两道真题(TREE / SEGMENT)

一、教材与学情

课题专题8 · 二分(二)· 二分答案
课时1 课时(45 分钟)
对应真题伐木工人砍树、数列分段 Section II

学生上一讲已掌握两套模板,但面对「求最大/最小」的最优问题,想不到要二分。本讲的突破口是让他们体会:求最优很难,但判定可行很容易。

二、教学目标

知道

能说出二分答案的三要素(范围、单调性、check)与两种经典问法。

理解

能针对具体问题判断单调性方向,并据此决定二分的收缩方向。

应用

能独立完成砍树与数列分段,正确选择模板与数据类型。

三、教学流程

「上一讲二分的是下标。这一讲,二分的是答案本身。」(第 2 页)

用「给你一个高度 H,你能不能达标?」这个问题切入。让学生先承认「判定」只要扫一遍,而「求最优」要试 10⁹ 次——差距就出来了。

「写二分答案前,先在草稿上写三行:范围、单调性、check。」(第 3 页)

这三行是硬要求。我会要求学生在写代码前先交草稿,避免「边写边想」导致方向写反。

「注意:题目问『最大』不等于用模板②。要看 check 成立时往哪边收缩。」(第 4 页)

这是本讲最需要强调的一点。用砍树(问最大、但 H 越大越难)与数列分段(问最小、但 X 越大越易)做对比,让学生发现「问法」与「模板」并不同向。

「H=36 时木料刚好 20,H=37 时只剩 17 —— 答案就在这一线之间。」(第 5–7 页)

第 5 页模拟器逐步展示 l/r/mid 与木料量,学生能看到收敛过程。讲代码时钉死 long long:n=10⁶、树高 10⁹ 时木料达 10¹⁵。

「数列分段的 check 为什么能贪心?因为要让段数最少,每段就得尽量装满。」(第 8–10 页)

第 10 页模拟器让学生切换 X=5/6/8,亲手看到段数从 4 变 3 再变 3,直观理解单调性。这一屏是本讲的「啊哈时刻」。

「cnt 从 1 开始,不是 0 —— 至少有一段。」

顺带把下界取「最大元素」的原因讲清:若下界取 0,mid 可能小于某个元素,贪心时那个元素单独一段、且永远装不下,段数虚高导致二分方向错乱。

四、板书设计

三要素:范围 [l,r] 单调性 check(x)
砍树:H↑ → 木料↓ check(H)=木料≥m 求最大 → 模板② long long
分段:X↑ → 段数↓ check(X)=段数≤m 求最小 → 模板① cnt=1
复杂度:O(n log V),V=10^9 只需约 30 次

五、亮点与反思

亮点一:用「判定易、求解难」建立二分答案的动机。学生理解了思想来源,而不是套模板。
亮点二:X=5/6/8 三档切换的 check 模拟器。把抽象的单调性变成看得见的段数变化,是本讲理解的关键支点。
可改进:网线主管(精度到厘米)一题因课时未展开。若要讲,建议放在「浮点二分 + 二分答案」的结合处,作为下节课的引子。