跳转至

差分约束

约 208 个字 预计阅读时间 1 分钟

多元一次不等式,x_i 未知,y_i 已知

\begin{cases}x_{c_1}-c_{c_1'}\le y_1\\ x_{c_2}-c_{c_2'}\le y_2\\ ...\\x_{c_n}-c_{c_n'}\le y_n\end{cases}

对于每个约束,从 c_i'c_i 连边权 y_i 的有向边,0点作为超级源点向所有点连边权0的有向边,用bellman-ford跑单源最短路,如果存在负环则无解。

dis[i]表示 x_i 的一组可行解,所有 x_i 加上同一个数,答案仍可行

dis[0]=w,可以得到 x_i\le w 的最大解(每个变量取到能取到的最大值),最小解求最长路即可,把比较符号逆转,距离初始化为-INF。

实际问题通过移项,加减1,两个小于等于实现等于,来转换。