差分约束加训

差分约束加训

感觉这部分好烂

板子

$ 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 $ 会寄,所以拓扑

posted @ 2024-08-22 17:02  __Tzf  阅读(4)  评论(0编辑  收藏  举报