差分约束
\((1)求不等式的可行解\\ 源点需要满足的条件: \color{Red}{从源点出发,一定可以走到所有的边.}\)
步骤
- \(先将每个不等式x_i\le x_j + c_k,转化为一条从x_j走到x_i,长度为c的一条路径.\)
- \(找一个虚拟源点,使得该源点一定可以遍历所有边.\)
- \(从源点求一遍单源最短路径\)
- \(结果1:如果存在负环,则原不等式无解.\)
- \(结果2:如果没有负环,则dist[i]就是原不等式组的一个可行解.\)
求最大值和最小值
\(结论:\color{Red}{如果求的是最小值,应该求最长路;如果求的是最大值,应该求最短路.}\)
\(问题:如何转化x_i\le c,c为常数,这类的不等式\)
\(方法:建立一个虚拟源点,0,然后建立0 \rightarrow i的边,边长为c.\)
\(以求x_i的最大值为例,求所有从x_i出发,构成的不等式链\\ \color{Red}{x_i\le x_j+c_1\le x_k +c_2+c_1\le .....\le \sum{c_i}}\)
\(所计算的上界,最终x_i的最大值为所有上界的最小值.\)