首页 > 其他分享 >Capitalism

Capitalism

时间:2024-11-11 10:59:12浏览次数:1  
标签:text 奇偶性 差分 约束 leq array Capitalism

算法

差分约束

观察到 \(a_i\) 最后是确定唯一的 + 我是从差分约束专题来的 ,考虑对于 \(a_i\) 的约束条件进行差分约束。

转化约束条件

观察到,

\[\left\{ \begin{array}{lr} b = 0, \lvert {a_u - a_v} \rvert = 1, & \\ b = 1, a_u + 1 = a_v & \end{array} \right. \]

\[\Downarrow \]

\[\left\{ \begin{array}{lr} a_u, a_v \in \mathbb{Z}, & \\ b = 0, a_u + 1 \geq a_v \text{ 或 } a_v + 1 \geq a_u \text{ 且 } a_u \neq a_v, & \\ b = 1, a_u + 1 \geq a_v \text{ 且 } a_u + 1 \leq a_v & \end{array} \right. \]

都可以作为约束条件。
但是需要解决 \(a_u = a_v\) 的情况。

观察到原图如果不是一个二分图(存在奇环),那么不管对于环上每一边 \((u, v)\) 的权值取 \(-1\) 还是 \(1\) ,必不可能使 \(\sum w = 0\) 。
所以原图一定是二分图。

处理方式

根据二分图性质处理

在没有奇环的情况下,一条边相连的两个点的 \(dis\) 一定奇偶性不同 ( \(w \in \{ 1, -1 \}\) 每次跑一条边必定改变 \(dis\) 奇偶性,只有存在奇环时,才能出现奇偶性不变的情况),是不可能出现 \(a_i=a_j\) 的。
因此可以直接跑一遍即可。

终于搞懂了, 耗时 \(2 \text{ } \rm{hours}\) 。

二分图 trick

令当前考虑的边为 \((u, v)\), 其中 \(u\) 为偶数点,
令 \(a_u = 2b_u, a_v = 2b_v + 1\) ,
即可将 \(\lvert {a_u-a_v}\rvert \leq 1\) 转化为 \(b_v\leq b_u\leq b_v+1\) ,这样差值内的整数就只有 \(0/1\) 了。
这个思路来源于 ningago 的题解

跑差分约束

无论如何,最后枚举 \(0\) 势点,跑差分约束即可。
不会的见 差分约束模板

最短路应用

具体见 FutaRimeWoawaSete 的题解

代码

后补

总结

边权 \(\in \{ 1, -1 \}\) 时,拥有一些特殊的性质。

对于绝对值不等式,考虑变形 trick 。

标签:text,奇偶性,差分,约束,leq,array,Capitalism
From: https://www.cnblogs.com/YzaCsp/p/18538982

相关文章