摘要: 题意: 一共有 n 个任务, m 台机器, 知道了每个机器处理每个任务的时间,一个任务只有在处理完之后才能处理其他任务,问你最少需要多少时间, 才能做完所有的任务。分析: 以 任务为 X 集合 第 i 个任务在第 j 台机器 倒数第 k 个完成为 Y 集合,找到完全匹配下的最小权匹配,此题构图方法依然是 拆点。View Code #include<stdio.h>#include<string.h>#define INF 0x1f1f1f#define clr(x)memset(x,0,sizeof(x))int sx[55],sy[2550];int lx[55],l 阅读全文
posted @ 2012-04-24 21:42 'wind 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 分析: 和 poj 1840很像,用poj 的方法跑了960多毫秒,用 lzsz1212 大牛的方法跑了 200多毫秒View Code #include<stdio.h>#include<string.h>int h[2000000];const int di=1000000;int main(){ int p[101]; int i,j,a,b,c,d,sum; for(i=1;i<=100;i++) p[i]=i*i; while(scanf("%d%d%d%d",&a,&b,&c,&d)!=EOF) { 阅读全文
posted @ 2012-04-24 21:26 'wind 阅读(132) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你一个包含 n 个城市的距离,并告诉你其中的一些路的距离,让你用一些环去覆盖所有点,且每个点只能覆盖一次,问环的最小城市多少。分析:每个点只出现一次,而每一个点对应一个入的边和一个出的边,可以将入边放入 X 集合, 出边放入 Y 集合,二分该图,求其完全匹配下的最小权值 匹配。View Code #include<stdio.h>#include<string.h>#define INF 0x1f1f1f#define clr(x)memset(x,0,sizeof(x))int sx[202],sy[202];int lx[202],ly[202];int 阅读全文
posted @ 2012-04-24 17:35 'wind 阅读(182) 评论(0) 推荐(0) 编辑
摘要: 题意: 给你一个图HH. .m. . . . .. . . . .. . . . .mm. .Hm代表人 H 代表房子,一个人只能进一个房子,问你如何安排人进房,使得总步数最小。分析: 可以用最小费用最大流,也可以用二分图最优匹配。#include<stdio.h>#include<string.h>#define min(a,b)(a)<(b)?(a):(b)#define INF 0x1f1f1f#define maxn 105#define clr(x)memset(x,0,sizeof(x))int abs(int x){ return x>0?x: 阅读全文
posted @ 2012-04-24 13:09 'wind 阅读(294) 评论(0) 推荐(0) 编辑