以行列为点建图,每个点(x,y)
对应一条边连接x,y。二分图的最小点覆盖=最大匹配//#pragma comment(linker,
"/STACK:1024000000,1024000000")#include#include#include#include#include#include#in...
分类:
其他好文 时间:
2014-05-08 14:33:39
阅读次数:
251
每个门每个时间只能出一个人,那就把每个门拆成多个,对应每个时间。不断增加时间,然后增广,直到最大匹配。//#pragma comment(linker,
"/STACK:1024000000,1024000000")#include#include#include#include#include#i...
分类:
其他好文 时间:
2014-05-08 14:24:17
阅读次数:
721
Attacking rooks
在一个n*n的图中,‘X’代表卒,在‘.’的地方放置尽量多的车,使得它们不互相攻击。问最多可放置车的数目。
和Fire Net一样,但这里图是100*100的,搜索会超时(其实我还脑残的试了试).
正解是二分图匹配,将每行中连续为.的作为X集合中一个点,同样,将每列中连续为.的点作为Y集合中的一个点。对原图中每个'.',将其对应的X集合和Y集合...
分类:
其他好文 时间:
2014-05-07 21:46:28
阅读次数:
340
此文意在整理二分图的各种变形。
HDU 1068 Girls and Boys
最基础的二分图匹配问题,简单的求最大匹配数。
HDU 1150 Machine Schedule
无向图 最小点集覆盖 = 最大匹配。
把作业看成边,把机器看成点。
无向图的最小点集覆盖是指存点集K,使得图中的所有边都与K中的某些点相连 ,且去除K任意一点就不再满足前述条件。
HD...
分类:
其他好文 时间:
2014-05-06 23:13:26
阅读次数:
348
HDU 2063
求一个二分图的最大匹配。
完全的裸题。贴代码。
#include
#include
#include
#include
#include
using namespace std;
vector G[1005];
bool check[1005];
int mac[1005];
int n;
void add_edge(int from,int to)
{
G[f...
分类:
其他好文 时间:
2014-05-02 20:57:04
阅读次数:
359
http://acm.hnu.cn/online/?action=problem&type=show&id=10111题意:中文题解:在龙哥的帮助下正了二分图匹配的三观……以前的理解繁琐,或者有点儿错吧……二分图匹配从左往右匹配,找增广路。顶点数和match()不需要那么麻烦。
1 // 2 /.....
分类:
其他好文 时间:
2014-04-29 18:30:30
阅读次数:
518
题意:
众所周知,老师经常在班级上点名。点名是从名单上叫一个人的名字或者id来判断名单上这个人是否在场。学生们总是有各种各样的理由不来,所以他们需要其他人帮他们答到。但是打到工作不是这么简单,出于各种考虑,他们答道遵循以下原则。1.
每个来上课的人必须给自己达到;2. 每个来上课的人,只能帮另外一....
分类:
其他好文 时间:
2014-04-29 11:47:46
阅读次数:
335