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