差分约束系统

好巧妙的算法!

对于我这种孤陋寡闻的人,以前根本就没有听说过这种算法,碰到这种题还以为用网络流(蠢),

大概

有一个数列 a ,存在一些关系: ax<=ay+z(z)
那么我们就可以用一张图来表示这个关系:把y向x连一条边,边权为z,
解释:
假设有一张图,设 dx 为x点到1的最短距离,点y与x点有边连接,距离为 sx,y
那么有: dx<=dy+Sx,y
发现和上面的式子长得差不多一样,

建出图以后,我们就可以通过跑最短路来搞出一个可能不唯一的a数列,
如果再多一点限制就可以确定a数列了,

例题

【JZOJ3430】DY引擎

你可能感兴趣的:(差分约束系统)