随笔分类 -  差分约束系统

差分约束系统
摘要:小结:差分约束就是用最短(最长路径)来解决满足一系列约束条件的问题的最优解,首先约束条件必须满足一定的限制,即每个约束条件系数只能为1,-1这样的不等式。差分约束系统的解题过程大致为:a 建立约束图增加一个原点,根据约束条件构造约束图。b 利用dijkstra或者bellman_ford求出最短(长)路径,如果有负边,只能用后者。如果题目要求出最小值,我们将所有的不等式转化成>=,构造出约束图,开始的时候每个dist[i]赋值为-INF,然后求最长路径,这个是原点距离固定的情况,比如题目poj1201,mina是最小坐标,minb是最大坐标,题目让求的是dist[maxb]-dist[m 阅读全文

posted @ 2011-09-11 17:18 buptLizer 阅读(220) 评论(0) 推荐(0)

poj1201 查分约束系统
摘要:oj1201 查分约束系统和1716是同一类题目,求出包含区间中至少c个数的最小集合,建立约束图,就最长路径,把所有的符号转化为>=,利用spfa求解,这个题不能用bellman_ford,会超时。#include <iostream>#include <stdio.h>#include <queue>using namespace std;const int N=50002;const int INF=100000;struct node{ int to,w,next;};node edge[N*3];int n,num,maxb,dist[N],a 阅读全文

posted @ 2011-09-10 22:41 buptLizer 阅读(462) 评论(0) 推荐(0)

poj 3159 Candies
摘要:这题目做的一个纠结啊。N个人份糖果,其中含有约束条件,即对于a,b,c有 b-a<=c,看到这个不等式马上感觉到要用最短路解决了,问Sn-S1的最大值是多少,我们令S1=0即求Sn的最大值,查分约束题目,求最短路,初始原点1到2,3,..,n的距离为INF,每次松弛找到第一组满足约束条件的解,这个解就是最大值,但是这个题目有问题啊,用最常用的bellman_ford无法通过啊,n,m值太大了,只能用spfa或者其他的优化方法,这个题用spfa+stack,用queue也会超时的,我猜想可能stack的访问效率较后者快吧,我最开始用的dijkstra+优先队列,不是超时就是WA,WA的时候 阅读全文

posted @ 2011-09-10 22:40 buptLizer 阅读(325) 评论(0) 推荐(0)

导航