2012年8月18日
摘要: POJ_3686 看到这个题目后,首先一个思路就是相当于安排每个东西是第几次交给哪个机器做,这样就可以把每个机器拆成N个点当成二分图匹配的题目来做了。但是遇到的最大的问题就是,每个东西的总制造时间会依赖与前面制造的东西,这样每个东西的制造时间就不能独立计算,也就不能用二分图匹配去做了。 但实际上计算这些东西总的制造时间还有另外一种方式,就是对于每个物品而言,除了计算它本身消耗的时间,同时计算上后面的物品会因为它的制造而额外增加的时间。比如如果制造当前这个物品需要的时间是t,而后面还有k个物品要制造,那么就等同于这个物品一共消耗了t+k*t的时间。这样转化之后就会发现计算每个物品的制造时间就.. 阅读全文
posted @ 2012-08-18 19:16 Staginner 阅读(261) 评论(0) 推荐(0)
摘要: POJ_1486 这个题目相当于判断是否存在唯一的二分图最大匹配的问题,只不过最后即便没有唯一的二分图最大匹配,也将已经匹配好的输出即可。 在匹配的时候采用贪心的策略,如果当前有一个点只连了一条边,那么就一定可以唯一的确定出一个匹配,然后不停的这样找直到找完这样的点为止,剩下的如果还有点没进行匹配,那么剩下的点的匹配就不是唯一的了。#include<stdio.h>#include<string.h>#define MAXD 30int N, xM[MAXD], xn[MAXD], yn[MAXD], g[MAXD][MAXD];struct Digit{ int x, 阅读全文
posted @ 2012-08-18 16:25 Staginner 阅读(215) 评论(0) 推荐(0)
摘要: ZOJ_2587 这个题目本质上就是去判断最小割是否为1,在做完最大流之后的图上,我们从S出发沿非满流的边能走到的点一定是属于S集合的,其余能够沿非满流边走到T的点一定是属于T集合的,如果这时还没有覆盖所有的点,那么那些点就既可以看作是S集合的,也可以看作是T集合的,自然最小割就不唯一了。#include<stdio.h>#include<string.h>#include<algorithm>#define MAXD 810#define MAXM 20010#define INF 0x3f3f3f3fint N, M, first[MAXD], e, n 阅读全文
posted @ 2012-08-18 13:45 Staginner 阅读(207) 评论(0) 推荐(0)
摘要: POJ_3189 一开始题意各种理解错,首先输入的那个矩阵第i行第j列的值表示的是奶牛i会第j个中意的牛棚,最后求的range就相当于j的range,至于range是变化的范围,比如j在1、2变化,那么range就应该是2,也就是MAX-MIN+1。 因此我们可以枚举range的下界和上届,然后用二分图多重匹配判断是否有解,当然用网络流判断也可以,不过好像比较慢。在枚举range的时候可以做到O(N),比如现在range是[x,y],如果当前无解那么就扩大上届令y=y+1,如果有解就缩小下届令x=x+1。#include<stdio.h>#include<string.h&g 阅读全文
posted @ 2012-08-18 11:37 Staginner 阅读(309) 评论(0) 推荐(0)
摘要: POJ_3498 对于任何一点来讲,限制的是跳走的企鹅的数量,如果这个点不是终点,那么必然跳过来的企鹅都会跳走,因此实际上限制的是经过这个点的企鹅的数量,这样通过拆点来限制经过点的企鹅的数量就可以了。最后暴力一点,枚举每个点作为终点并判断一下就可以了。#include<stdio.h>#include<string.h>#include<algorithm>#define MAXD 210#define MAXM 40410#define INF 0x3f3f3f3fint N, first[MAXD], e, next[MAXM], v[MAXM], fl 阅读全文
posted @ 2012-08-18 10:06 Staginner 阅读(285) 评论(0) 推荐(0)
摘要: POJ_2125 由于最后的目标是不存在一个条x->y的边,因此我们可以构造一个网络流模型(其中x->y连一条容量为INF的边),如果存在S->x->y->T这样的通路,就说明这条边还存在,那么就要通过删除一个点的入边或者出边来达到删掉这条边的目的。这时我们会发现如果任意一个点i只用一个点表示的话,是没办法对删入边和出边做区分的,因此需要将i拆成两个点i、i',那么上面的边x->y就要修正成x->y'。这时我们就可以明晰使S->x->y'->T这样的路径不再存在所需要花费的代价了,无非有两种措施,要么断开S-& 阅读全文
posted @ 2012-08-18 01:39 Staginner 阅读(239) 评论(0) 推荐(0)
摘要: POJ_3204 这个题目和ZOJ_2532是一样的题目,具体的思路可以参考我的ZOJ_2532的解题报告:http://www.cnblogs.com/staginner/archive/2012/08/11/2633751.html。#include<stdio.h>#include<string.h>#include<algorithm>#define MAXD 510#define MAXM 10010#define INF 0x3f3f3f3fint N, M, first[MAXD], e, next[MAXM], v[MAXM], flow[M 阅读全文
posted @ 2012-08-18 00:29 Staginner 阅读(180) 评论(0) 推荐(0)