差分约束

1.对于每个不等式s[i]-s[j]<=k,向(ji)加一条权重为k的边;对于每个不等式s[i]-s[j]>=k,向(ij)加一条权重为k的边;

增加源点s,并向所有点加一条权重为0的边;求最短路径求得的d[]s[]的一组解,且是最大解(或求从t到s的最短路,d[s]为最小解)

2.对于不等式 a - b >= c ,建一条 b 到 a 的权值为 c 的边,求的是最长路,得到的是最小值  

注意:1.Spfa返回false(图中出现负环,某些点不可达),则说明无解;

2.注意相邻两点间的边(ii+11),(i+1i0);

3.注意区间开闭与字段和之间转换;

4.求最大值时,边反向,权反向,最长最短反向


Poj 1716 Integer Intervals

题意:给出若干个闭区间,每个区间内至少有2个正数,问至少需要多少个整数。

解:闭区间转换为开区间S[i]0i左闭右开区间内所需个数。

对于每个区间(ij),s[j+1]-s[i]>=2,加边(i,j,2);

 0<=s[i+1]-s[i]<=1,加边(i+1,i,-1)和(i,i+1,0);

以所有约束区间最左端的点为起点做源点,最右端的端点做终点求最长路。


poj 1201 Intervals

题意:每个区间[ai, bi]至少存在ci个元素,问至少需要多少个,类似于1716


poj 1275  Cashier Employment

题意:给出每个小时需要的人数,及n名应聘者开始工作的时间(连续工作8小时),问至少需要雇佣多少名员工。

解:每个小时需求need [],每个小时开始工作的应聘者数目r[].i小时实际雇佣人数 s[],不等式:

0<=s[i]-s[i-1]<=r[i]

s[i]-s [i-8]>=need[i](9<=i<=24)

s[i] -(ans-s[i+16])>=need[i](1<=i<=8)

因为ans未知,所以需要二分枚举ans,且加边(0,24-ans),若存在解则证明可行。


poj 3169 Layout 

判环求 s[n]-s[1]<=ans,最大值求解问题

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值