1.1.6差分约束

差分约束是求解N元一次特殊不等式组的一种方法。
差分约束系统包含N个变量和M个约束条件,每个约束条件都是一个关于两个变量的一次不等式,每个不等式形如X[i]-X[j]<=A[k],其中1<=i,j<=N,1<=k<=M,X[i]、X[j]为变量,A[k]为常数。
引理:若{Xi}为差分约束系统的一组解,Δ为常数,那么{Xi+Δ}也是一组解。
差分约束可以转化为图论中的单源最短路问题求解。差分约束系统中的每个不等式都与最短路中的三角形不等式 dist[v]<=dist[u]+edge(u,v) 形似。
把变量Xi看做有向图中的点i,对不等式X[i]-X[j]<=A[k]从j向i连一条有向边,边权为A[k]。建立一个源点,向每个点连一条有向边,边权为0。从源点出发求单源最短路,X[i]=dist[i]就是一组可行解。有负环说明无解。
若对X[i]有范围限制,可用X[i]与源点之间的约束表示。
不等式>=号时用最长路解决,此时有正环说明无解。

P3275 [SCOI2011]糖果

 

这是一道非常好的题目,题目的五个约束条件首先都是十分常见的差分约束条件,但是仔细考虑,这个会出现环的情况,所以我们在建图后要进行一次tarjan缩点,然后再建新图,在新图上进行topo序,然后得到最小的和

 

代码

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值