上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 61 下一页
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3251思路:选择1为源点,n+1为汇点,然后原图中每条边为新图的边,容量为边权,最后将每个可以选择的点与汇点连接,容量为点权,这样跑一遍最大流之后,求出最小割,然后所有的总收益减去最小割就是可能的最大收益了。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define MAXN 1111 6 #define MAXM 44 阅读全文
posted @ 2013-05-07 22:39 ihge2k 阅读(316) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3657思路我就不详细讲了,这位大牛讲的很清楚:http://blog.csdn.net/cold__v__moon/article/details/7924269View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #define MAXN 55 5 #define MAXM 55*55 6 #define inf 1<<30 7 using namespace 阅读全文
posted @ 2013-05-07 17:16 ihge2k 阅读(445) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4394思路:n的个位可以由m的个位确定,n的十位可以由m的个位和十位确定,以上同理,故直接bfs搜索就可以,先搜个位满足要求的,然后在满足要求的个位上扩展到十位上(其实就是就是在个位数前加个数,变成2位数)。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #include<cmath> 6 using name 阅读全文
posted @ 2013-05-07 14:28 ihge2k 阅读(274) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1240思路:就是一个简单的bfs,但我搞了好久啊,有一个trick一直没注意到,然后第二组数据就一直过不了。。。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 #include<queue> 5 #include<cmath> 6 using namespace std; 7 #define MAXN 17 8 char map[MAXN][MA 阅读全文
posted @ 2013-05-06 22:45 ihge2k 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1354思路:最麻烦的就是字符串处理了,但sscanf函数功能相当强大,orz....然后dfs就可以了,但才过了18个人。View Code 1 #include 2 #include 3 #include 4 #include 5 #include 6 using namespace std; 7 #define MAXN 333 8 struct Node{ 9 int f1,f2;10 }C[MAXN];11 char str[MAXN];12 int path[MAXN];13 b... 阅读全文
posted @ 2013-05-06 20:57 ihge2k 阅读(177) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3491思路:由于每个城市顶点都具有权值,所以对于每个城市拆成两个点u和所对应的u',之间连容量为w的边,S,H两点不会算在最小割中,所以将这两点拆点,拆点后容量为无穷,添加源点vs(0)和汇点vt(2*n+1),加边(vs,s,INF)和(t+n,vt,INF),对于两相连的城市,用其中一个点的第二个点去连另一个点的第一个点,边流量为无穷大,然后求解最大流即可.View Code 1 #include<iostream> 2 #include<cstdio> 3 #i 阅读全文
posted @ 2013-05-06 11:42 ihge2k 阅读(148) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4292思路:为了控制一个人只连一瓶饮料,一份食物,那么我们可以把一个人拆成两个,他们之间连一条权值为1的边,另外左边连它喜欢的食物,权值为1,右边连它喜欢的饮料,权值为1,在起点连食物的时候加流量限制,终点加流量限制,跑一遍最大流即可。View Code 1 #include<iostream> 2 #include<cstdio> 3 #include<cstring> 4 using namespace std; 5 #define MAXN 1111 6 # 阅读全文
posted @ 2013-05-05 22:15 ihge2k 阅读(530) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1565http://acm.hdu.edu.cn/showproblem.php?pid=1569先理理概念:点覆盖集:无向图G的一个点集,使得该图中所有边都至少有一个端点在该集合内。最小点权覆盖集:在带点权无向图G中,点权之和最小的覆盖集。点独立集:无向图G的一个点集,使得任两个在该集合中的点在原图中都不相邻。最大点权独立集:在带权无向图G中,点权之和最大的独立集。定理:1. 最小点权覆盖集=最小割=最大流2. 最大点权独立集=总权-最小点权覆盖集思路:1. 先染色,取一个点染白色,和它相邻的点染 阅读全文
posted @ 2013-05-05 20:37 ihge2k 阅读(1122) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3046思路:最小割的入门题,设源点为0,汇点为n*m+1,源点与点为2的连一天容量为inf的边,汇点与点为1的连容量为inf的边,每个相邻网格连容量为1的边。View Code 1 #include<iostream> 2 #include<cstring> 3 #include<cstdio> 4 using namespace std; 5 #define MAXN 44444 6 #define MAXM 555555 7 #define inf 1< 阅读全文
posted @ 2013-05-05 19:12 ihge2k 阅读(355) 评论(0) 推荐(0) 编辑
摘要: 题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4309思路:2^12枚举修复哪些桥,不修复的桥没有花费,连接的边流量为1,要修复的桥则计算花费,边的流量为无穷,建立最大流模型来求解,增加一个源点S(0),和一个汇点T(n+1)。S向每个有人的点,连一条容量为人数的边,图中普通的u->v的有向边,连一条u->v的流量为无穷的边,对于u->v的隧道,可以连接u->v的流量无穷的边,和u->T的流量为隧道人数上限的边,求解最大流即可;ps:枚举状态用递归即可。View Code 1 #include<iostream 阅读全文
posted @ 2013-05-05 12:54 ihge2k 阅读(433) 评论(0) 推荐(0) 编辑
上一页 1 ··· 36 37 38 39 40 41 42 43 44 ··· 61 下一页