跳到正文

并查集与动态连通

40 分钟

本节进入 408 强化阶段的 并查集与动态连通。要求从定义出发完成真题级推演,并把过程写到可以复查。

状态模型与不变量

并查集以父指针森林表示集合;路径压缩缩短查找链,按大小或秩合并避免树退化。

开始计算前先列出输入、单位、下标与初始状态。算法题必须说明数据结构保存什么;硬件、操作系统和网络题必须画出字段或时间线。任何一步状态更新都要能指出依据。

例题推演

依次合并 0-1、2-3、1-2 后,0 与 3 属于同一集合。

正式作答时按“公式或规则—代入—中间状态—结论”书写。若有多次访问、调度或转发,用表格逐行记录,不能靠脑中跳步。完成后用极小输入、边界输入和一个反例复核。

易错边界

只修改一个根的父亲才是集合合并;把普通结点随意相连会破坏表示不变量。

选择题要逐项检查前提与量词;计算题要检查字节/比特、周期/秒、地址/块号等单位;算法题还要说明最坏复杂度、额外空间和终止性。

随课训练要求

  1. 单选题必须解释另外三项为何错误。
  2. 多选题漏选、多选均不得分。
  3. 计算题保留推导;代码题必须通过四个独立用例,禁止样例硬编码。
  4. 将错因标为知识、建模、状态更新、计算或审题,并在次日重做。

能得到一个数不等于掌握;能重建状态、解释规则并迁移到变式才算完成。

Practice

本课练习

3

先独立作答再提交;编程题会在隔离沙箱中真实编译、运行并对拍。

1强化单选:并查集与动态连通 2

下列关于本节模型的说法,正确的是哪一项?

登录 后答题可以领小红花
2强化多选:并查集与动态连通 2

选择所有正确说法。漏选或多选均不得分。

多选题:必须选全正确项,漏选或多选均不得分。

登录 后答题可以领小红花
3强化应用:并查集与动态连通 3

输入 n,q。操作 U a b 合并集合,Q a b 查询是否连通并输出 YES/NO。顶点编号 0..n-1,使用 Python 3。

登录 后答题可以领小红花