随笔分类 -  差分约束

用图论来解决差分约束系统
摘要:题意:有N头牛,这些牛都拥有一个属性x表示其在坐标轴上的坐标。现在给定ML组约束条件表示A、B两头牛坐标之差不能够超过C;MD组约束条件表示A、B两头牛坐标之差不能小于C,现在问1和N号牛之间最长的距离为多大,如果存在则输出最大长度,如果任意输出-2,如果已知条件存在矛盾输出-1。解法:根据已知条件建立约束系统,问题在于形容两个点之间的距离看似是一种双向边的关系,但是如果一旦建立双向的负边那么就会发生错判了,这显然是错误的,因此我们只能够建立单向的边。为每一个点都选择一个参考点,我选择N号点作为参考点,那么每个点的相对距离就变成了与N号点的距离之差,所有边就都成为了从编号小的点指向编号大的点, 阅读全文
posted @ 2013-03-20 23:25 沐阳 阅读(292) 评论(0) 推荐(0) 编辑
摘要:题意:给定N个任务,每个任务有一个完成时间。这些任务之间有完成的四种先后顺序,假设这种二元关系建立在x,y之间: SAS:x至少在y开始时开始 SAF:x至少在y完成时开始 FAS:x至少在y开始时完成 FAF:x至少在y完成时完成 现在问这些任务在最短时间内都被完成的任务安排如何?输出每个任务开始的时刻,如果不能的话输出impossible。解法:根据开始时间建图,之后再虚拟出一个任务0,这个任务必须在每个任务完成后完成,因此在0到每个任务之间添加一条边,最后计算出所有节点中到0点最迟的开始的任务,设该任务0点开始,并让每个任务的开始时间都加上这个时间差。代码如下:#in... 阅读全文
posted @ 2013-03-20 19:06 沐阳 阅读(368) 评论(3) 推荐(0) 编辑
摘要:题意:德黑兰的一家每天24小时营业的超市,需要一批出纳员来满足它的需求。超市经理雇佣你来帮他解决一个问题————超市在每天的不同时段需要不同数目的出纳员(例如,午夜只需一小批,而下午则需要很多)来为顾客提供优质服务,他希望雇佣最少数目的纳员。超市经历已经提供一天里每一小时需要出纳员的最少数量————R(0),R(1),...,R(23)。R(0)表示从午夜到凌晨1:00所需要出纳员的最少数目;R(1)表示凌晨1:00到2:00之间需要的;等等。每一天,这些数据都是相同的。有N人申请这项工作,每个申请者i在每天24小时当中,从一个特定的时刻开始连续工作恰好8小时。定义ti(0<=ti< 阅读全文
posted @ 2013-03-15 18:28 沐阳 阅读(587) 评论(0) 推荐(0) 编辑
摘要:题意:和上一题比较像,不过这里不是根据已知的约束求出另外一个约束,而是判定是否存在解。给定一个区间的和值区间,问整个区间能否满足所有的要求。解法:虚拟一个超级源点,超级源点到点i的最短路表示到第i个数时总和为dis[i],为了保证每个点能够被计算到,那么需要从超级源点连一条没有什么影响的边出来。然后对整个图求一次spfa,观察是否存在负环。代码如下:#include <cstdlib>#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>us 阅读全文
posted @ 2013-03-14 15:20 沐阳 阅读(210) 评论(0) 推荐(0) 编辑
摘要:题意:给定若干个连续的整数区间[ai, bi]以及ci,现在要求这样一个集合Z,集合Z中的元素与每个给定的区间的元素交集至少有ci个。解法:通过把dis[i]看做Z中小于等于整数i一共有多少个元素。那么对于题目给定条件有表达式dis[b] - dis[a-1] >= ci,根据这个不等式就能够进行构边了。除此之外,还有一些隐含的条件:0 <= dis[i]-dis[i-1] <= 1,对这些关系同样进行构边。然后要求的值就是dis[Max] - dis[Min-1] >= M中的M,其中Max和Min是出现的最小左、右边界,令dis[Max] = 0,那么就是求解的就是 阅读全文
posted @ 2013-03-13 15:30 沐阳 阅读(339) 评论(0) 推荐(0) 编辑
摘要:题意:告诉我们一系列的不等式,当然这些不等式都是两个变量之间的差值,而非和值。刘备拥有N个军营,每个军营都有一个人数的上限,现在陆逊的探子来报刘备的[a, b]军营总人数不低过某一个值,现在问根据这些答案陆逊是否能够正确推断出刘备至少在各营一共驻扎了多少部队,如果不能推出,输出“Bad Estimations”。分析:根据给定的条件,我们设sum[i]表示刘备前i个军营一共驻扎了多少人,那么每个军营至多有多少人就能够通过不等式列出来。假设一共有三个军营,上限分别为A,B,C,那么有:0 <= sum[1] - sum[0] <= A0 <= sum[2] - sum[1] & 阅读全文
posted @ 2013-03-12 20:49 沐阳 阅读(220) 评论(0) 推荐(0) 编辑
摘要:World ExhibitionTime Limit: 2000/1000 MS (Java/Others)Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 568Accepted Submission(s): 264Problem DescriptionNowadays, many people want to go to Shanghai to visit the World Exhibition. So there are always a lot of people who are standing along 阅读全文
posted @ 2011-08-06 16:48 沐阳 阅读(378) 评论(0) 推荐(0) 编辑
摘要:Burn the Linked CampTime Limit: 1 Second Memory Limit: 32768 KBIt is well known that, in the period of The Three Empires, Liu Bei, the emperor of the Shu Empire, was defeated by Lu Xun, a general of the Wu Empire. The defeat was due to Liu Bei's wrong decision that he divided his large troops in 阅读全文
posted @ 2011-08-05 19:23 沐阳 阅读(712) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示