UNIT 44 / 78 · W06-3
从有序候选到图上的发现顺序
本单元预计 4 核心小时。可以分成多个学习时段,按完整小节推进;停下来时留下输入、命令、结果和下一步。
时间包含阅读、编码与检查,是学习预算而非期限。打开此页只保存阅读位置,不代表通过验收。
先知道自己在观察什么
二分、排序与堆:保留哪些候选 →
只先读lower_bound的半开不变量与最小堆保留边界,再手推重复值。
递归、树与图:沿着依赖和边访问 →
接着读树的基础情况和BFS入队标记;按邻接表逐层画队列。
先备不清楚时,沿章节入口补读;不要依赖翻过页数判断进度。
先留下自己的预测或独立尝试
预测[1,3,3,7]的最左3位置;运行后复述每次为何严格缩短区间。
第一个不小于目标的位置 →源码下载与编译入口
下载到自己的练习目录。按本节给出的完整命令编译;多文件与driver要求见原任务。需要时查阅文件保存与编译操作 →
16-a.cpp先保存预测,再核对正文标明的预期或诊断。完整构建、多文件与设备实验按原任务命令执行。
通过一个变动看清原因
在副本增加[2,2,2]查1、2、3的边界,并保留空输入。
修改后应观察到什么
下标分别为0、0、3;尾后下标不被解引用。
换一组条件,独立解决
独立写无权BFS,邻接表[[1],[0,2],[1],[]]从0开始;同时用纸上树给空树与三节点链计算高度。
用这些条件检查自己的实现
- 距离[0,1,2,-1];入队时标记,每个可达节点只入队一次。
- 按节点层数,空树高度0、三节点链高度3;说明深递归风险。
用证据决定是否进入下一单元
- lower_bound返回结束位置时调用者该怎么办?
- BFS首次发现最短为什么依赖无权/等权条件?
本单元的验收依据
二分三个边界与BFS隔离节点测试通过;堆与更多图题放在既有4h算法复习,不额外开一条课程。
留下自己的代码或推演、测试输入、真实输出和仍不确定的问题。未达到要求时,下一次继续本单元。