2022.7.15 jiazhaopeng 讲课纪要
前言
由于难度仍然过高,难度再次下调,这节课主要在水绿。这节课讲的是并查集,之所以是以绿题为主是因为上了绿之后的题有一大半都要结合别的东西,初中生不会,所以只能讲的简单一点。
ORZ%%% jzp学长
正文
这节课以普通并查集和边带权并查集为主,并区分了什么时候可以路径压缩,什么时候不可以。
P1525 关押罪犯
对于一组数据,表示 \(a\) 和 \(b\) 的怨气值,那么将犯人 \(a\) 和犯人 \(b\) 的补集元素\((b+n)\) 放在一个集合中,以此这样形成并查集。
写的时候开数组为 \(2*n\).
接着,利用贪心的思想如果一组数据的两个犯人已经在一个集合中了,那么以后就不
用再操作了,直接把两个犯人的怨气输出。(公务繁忙的 Z 市长只会去看列表中的第一个事
件的影响力, 如果影响很坏,他就会考虑撤换警察局长。 )
然后就成为板子题了话说这节课全是板子题
P2024 [NOI2001]食物链
开 \(3 * n\) 的并查集,其中 \(x\) 用来连接与 \(x\) 同类的,\(x+n\) 用来连接 \(x\) 吃的,即 $x \(的猎物,\)x+2 * n$ 用来连接 $x $被吃的,即 \(x\) 的天敌。
判断如果$ x $吃 \(y\) 或$ x$被 \(y\) 吃,那么为假话,
\(x\) 与 \(y\) 同类,\(x\) 吃的$ y$ 也吃,\(x\) 被吃的 $y $也被吃;
判断如果 \(x\) 与 \(y\) 同类($x $与 $x $自然也是同类) 或 \(y\) 吃 \(x\),那么为假话,
否则 \(x\) 吃 \(y\),\(y\) 被 \(x\) 吃,$y $吃 \(x\) 被吃的.
这句话就是:\(A 吃 B,B 吃 C,C 吃 A\)