摘要: sap里面有个gap优化,一直没看懂,今天整理一下,发现被我修改变量名的num[i]记录的含义是标号为i的顶点数,刚开始num数组置零,表示所有表号都没有,唯独num[0] = n,表示所有的顶点现在的标号都为0。引用一下:我们在某次增广后,最大流可能已经求出,因此算法做了许多无用功。可以发现,距离标号是单调增的。这启示我们如果标号中存在“间隙”,则图中不会再有可增广路,于... 阅读全文
posted @ 2010-07-30 12:02 ylfdrib 阅读(1174) 评论(1) 推荐(0) 编辑
摘要: pku3281 Dining题目分析:有N头牛,F种食物,D种饮料,要求给每头牛分配一份食物和一种饮料,每种食物和每种饮料只能供一头牛享用,问最多能满足多少头牛的需要。建图:建一超级源点标号为0,连上所有的食物,边权为1,建一超级汇点标号为2 * N + F + D + 1,连上所有的饮料,边权为1,在构造N个点和N头牛一一对应,保证每头牛只享用一种食物和一种饮料,边权为1,每头牛享用的食物和对应... 阅读全文
posted @ 2010-07-28 21:42 ylfdrib 阅读(754) 评论(0) 推荐(0) 编辑
摘要: Dual Core CPU这题建图方式:第一核做源点(S = 0),第二核做汇点(T = N +1),每个模块的双核花费<Ai, Bi>,加边<S, i, Ai>, <i, T, Bi>,如果不在同一核上操作,虚假额外花费,即加双向容量,加边<a, b, w>, <b, a, w>。剩下的就是实现方法了,我这里用dinic来实现的。今天学... 阅读全文
posted @ 2010-07-27 21:03 ylfdrib 阅读(588) 评论(0) 推荐(0) 编辑
摘要: PIGS用EK就能做。盗用大牛讲解:题目大意:有 M 个猪圈(M ≤ 1000),每个猪圈里初始时有若干头猪。 一开始所有猪圈都是关闭的。 依次来了 N 个顾客(N ≤ 100),每个顾客分别会打开指定的几个猪圈,从中买若干头猪。 每个顾客分别都有他能够买的数量的上限。 每个顾客走后,他打开的那些猪圈中的猪,都可以被任意地调换到其它开着的猪圈里,然后所有猪圈重新关上。详解见:原创博客这... 阅读全文
posted @ 2010-07-26 20:57 ylfdrib 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 今天很惨,原因颇多,总结一下,拣点教训!1. 比赛的时候看题很重要,一些条件,格式,题上的对测试实例的讲解,需要注意的地方一定要看清楚,不要因为小错误耽误了大事!2. 分析题尤为重要,题一定要分析清楚了,才能动键盘,不要写完了,不停的打补丁,这样事倍功半,还影响心情,有一点小思路的时候,不要急着敲代码,可能因为一时的疏忽考虑,写出来的代码不能用,如果另写,倒没什么,如果是,写的差不多,再去对程序修... 阅读全文
posted @ 2010-07-25 20:22 ylfdrib 阅读(136) 评论(0) 推荐(0) 编辑
摘要: 差分约束,紧紧张张忙了几天,终于告一段落,差分约束,实际就是最短路,不过得加一源点,使得所有点连通,也可以不加,直接把所有点都入队(或入栈)就行,不过由于有负边权的原因,一般都用Bellman_Ford 或 SPFA 来解决,SPFA有两种实现,一种是queue,另一种是stack,有时用stack更快,所以我习惯用stack,SPFA中需要用邻接表,一般小数据的话就用Bellman_Ford 就... 阅读全文
posted @ 2010-07-24 11:32 ylfdrib 阅读(376) 评论(0) 推荐(0) 编辑
摘要: Cashier Employment由于数据量小,用Bellman_Ford就能过,而且不用要源点。这道差分约束题困了我好久,WA了好多次,主要是不理解题意,在那乱写,后来WA之后,看别人解题报告,又是狂改,最后还是没能过!今天早上,在真正理解之后,把需要修改地方给删了,又重写了一下,终于找到错误了,原来边数赋值错了。discuss里说的n = 4的情况是误导大家的,其实是少写了个条件,题目和数据... 阅读全文
posted @ 2010-07-24 10:50 ylfdrib 阅读(453) 评论(0) 推荐(1) 编辑
摘要: Intervals这题依然 SPFA + 栈 过!不同的是,这题有隐含条件,而且所求也大不一样。由于这是对区间操作,求至少包含区间[ai, bi]中ci个点的最小集合。可以用集合元素个数来定义变量,即num[bi] - num[ai] >= ci, 但有个隐含条件就是,每个元素都是整点,取得话,最多为一,最少为0, 即 num[i+1] - num[i] <= 1, num[i+1] ... 阅读全文
posted @ 2010-07-23 13:17 ylfdrib 阅读(351) 评论(0) 推荐(0) 编辑
摘要: Layout这题还是用的 SPFA + 栈 过的,400多ms,写得多了,发现都可以套用模块了,除了输入不太一样外,其他的都基本一样。模块一:负责各个数组的初始化模块二:负责加边,对边用邻接表处理模块三:SPFA 用栈来实现的过程代码 阅读全文
posted @ 2010-07-22 12:13 ylfdrib 阅读(225) 评论(0) 推荐(0) 编辑
摘要: Is the Information Reliable?分析题意:输入有两种形式:1:P A B X 即 B + X = A 转化一下: B - A <= -X, A - B <= X 构造边和权:(A, B, -X), (B, A, X)2:V A B 即 B +1<= A 转化一下:B - A <= -1构造边和权:(A, B, -1) WA了无数次,终于过了,不是SP... 阅读全文
posted @ 2010-07-22 11:29 ylfdrib 阅读(362) 评论(0) 推荐(0) 编辑