差分约束系统
介绍
差分约束系统这种东西非常的神奇,
就是如果一个系统由n个变量和m个约束条件组成,形成m个形如$$a_{i}-a_{j}\leq k$$的不等式\((i,j∈[1,n],k为常数)\),这可以把每个\(a_{i}\)当作一个节点,对于一个不等式\(a_{i}-a_{j}≤k\),将\(a_{j}向a_{i}连一条权值为k的有向边\),然后设置一个源点(按实际情况来设置),再用个最短路算法跑一边,就可以得到一组\(a_{i}\)的可行解。
原理
我们知道,在一个图中,如果节点\(a_{j}\)到节点\(a_{i}\)之间有一条有向边,边权为\(dis(j,i)\),那么$$a_{j}+dis(j,i)\geq a_{i}$$移项得$$a_{i}-a_{j}\leq dis(j,i)$$
不就可上面的不等式一样吗。
所以,就可以用最短路算法,来解决这类的问题。
【NOIP2013模拟】DY引擎
提供一道相关的题目,挺好的。