差分约束加训
差分约束加训
感觉这部分好烂
板子
$ m $ 组不等式,$ n $ 个未知数,不等式形如 $ x_{c_i} - x_{c'_i} \le y_i $,求解
若多组解,输出任意,没有输出 No
具体做法比较简单,就是观察到不等式长得很可爱,像 $ Dijkstra $ 的三角形不等式
然后我们就想到可以通过跑最短路来解决问题
我们钦定 $ dis_i $ 表示第 $ i $ 个未知数的解
然后拆不等式,得到 $ x_{c_i} \le x_{c'_i} + y_i $
那么这里 $ c_i $ 表示被更新的点,$ c'_i $ 表示当前的点,$ y_i $ 表示边权
于是我们对于每一个不等式,令 $ c'_i $ 向 $ c_i $ 连边,边权是 $ y_i $ 即可
跑一个最短路
接下来考虑无解情况,因为更新的过程是求解的过程,所以只有当一直更新的时候才说明没有解,即负环
然后我们就做完了
P4926
我们考虑二分 $ T $,对于一个 $ T $,因为是已知的,所以可以跑差分约束
然后就做完了
P3275
考虑将不等式转化成差分约束的形式,注意 $ A = B $ 可以转化成 $ A \le B $ 且 $ B \le A $
然后考虑糖果的数量是正数,这样就可以差分约束了
然后需要注意 $ SPFA $ 会寄,所以拓扑