好玩,优雅,赏心悦目
OI 中的知识点是有关联的,这种关联是优雅且好玩的。
有一个概念在本篇 BOKER 中有所提及,那就是只要两个东西性质完全一样,那这两个东西就是一个东西。对这句话的讨论是哲学上的。这里管上面那句话叫 JBDL。本篇博客较为随性,想到哪写哪。
差分约束
关联:不等式组、图。
差分约束是用来解决多元不等式组是否有解的问题。有这么一个 \(n\) 元不等式组,有 \(m\) 个约束条件,每个条件形如 \(x_i-x_j\leq c_k\),这个式子可以转化为 \(x_i \leq x_j+c_k\) ,注意到这个形式和最短路中 \(dist[i] \leq dist[j]+w\) 一个样,由 JBDL,可知这俩就是一个东西,那么我们就将不等式组问题转化为了图论问题。我们只需要自 \(j\) 向 \(i\) 连一条边权为 \(c_k\) 的边(注意方向),画画图就可以知道原不等式组有解等价于这个图没有负环。这里可以用 SPFA 判负环。
例题:Luogu P1993
这个题体现的是差分约束的常见转化。对于 \(a_i-a_j \geq c_k\),我们转化为 \(a_j \leq a_i + (-c_k)\),对于 \(a_i-a_j \leq c_k\),转化为 \(a_i \leq a_j+c_k\),对于 \(a_i=a_j\) ,我们转化为 \(a_i \leq a_j+0\) 与 \(a_j \leq a_i+0\) 两个式子,然后按照差分约束的套路,建边,判负环,即可。
Kruscal 重构树
关联:图,树
Kruscal 重构树可以将图转化为树。这个好处大大滴,因为这样我们就可以在图论题里写树剖了(重振树剖荣光)。开一个并查集记录每个节点所在子树的根。对于一个图中有边直接相连的两个点 \((u,v,w)\) ,如果 \(fa_u =fa_v\),不管他,否则新建一个节点 \(z\),连接 \((z,fa_u)\) 和 \((z,fa_v)\) ,并将 \(fa_v\) 与 \(fa_u\) 重置为 \(z\),将 \(z\) 的权值设为 \(w\),就完成了重构。