ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

差分约束系统 学习笔记

2022-05-17 21:33:30  阅读:155  来源: 互联网

标签:le space 笔记 约束 ge CODE 差分 Leftrightarrow


模板:P5960 【模板】差分约束算法

如果一个不等式组由 \(n\) 个变量和 \(m\) 个约束条件组成,形成 \(m\) 个形如

\[x_i-x_j \le k \space (i,j∈[1,n],k \in \mathbb{Z}) \]

的不等式,则称其为差分约束系统。

我们要解决的问题就是:

求出一组 \((x_1,x_2,..,x_n)\) 满足条件的解。


将 \(x_i-x_j \le k\) 变形成 \(x_i \le x_j+k\)。

对比最短路松弛后的情况 \(\forall v,d_v \le d_u+w\),发现二者十分相似。实际上最短路的结果就是差分约束系统的一组解。故对于每个不等式,将其转化为图上一条 \(j\) 指向 \(i\) 的边权为 \(k\) 的有向边。然后建立超级源 \(s\)。将 \(s\) 与每个节点连接一条边权为 \(0\) 的边,之后以 \(s\) 为起点,跑 \(\text{SPFA}\) 即可。如果差分约束系统无解则图上存在负环。(注意不可以用 \(\text{Dij}\),因为有负权边)

CODE

同时还可以建 \(i\) 到 \(j\) 边权为 \(-k\) 的有向边,跑最长路。

CODE


应用:P3275 [SCOI2011]糖果

几个转化:

\(x_i = x_j \Leftrightarrow (x_i\le x_j) \space \land \space (x_i \ge x_j)\)

\(x_i > x_j \Leftrightarrow x_i \ge x_j+1\)

\(x_i < x_j \Leftrightarrow x_j>x_i \Leftrightarrow x_j\ge x_i+1\)

然后建边跑最长路即可。

最后就是记得特判一下,如果在输入时某个小朋友的糖果要比自己多/少,则直接输出无解。

CODE

标签:le,space,笔记,约束,ge,CODE,差分,Leftrightarrow
来源: https://www.cnblogs.com/Gokix/p/cha-fen-yue-shu-xi-tong.html

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有