SGU 190.Dominoes(二分图匹配)】的更多相关文章

时间限制:0.25s 空间限制:4M 题意: 给定一个N*N的棋盘,一些格子被移除,在棋盘上放置一些1*2的骨牌,判定能否放满,并且输出任意方案. Solution: 首先考虑对棋盘的一个格子黑白染色(实际上不需要),得到一个类似国际象棋棋盘的东西,一个骨牌能放置在相邻的一对黑白格子上 我们考虑对每一个黑格子,连一条到相邻白色格子的边,然后做二分图的最大匹配,判断是否是完备匹配,输出解即可. 思路比较简单直接,输出需要一些简单技巧和小处理. code #include <iostream> #…
Codeforces 题面传送门 & 洛谷题面传送门 首先假设我们已经填好了所有问号处的值怎样判断是否存在一个合法的构造方案,显然对于一种方案能够构造出合法的基环内向森林当且仅当: \(\forall x,(0,x)\) 的个数为 \(x\) 的倍数,否则不能构成若干个长度为 \(x\) 的环. 设 \(mx_y=\max\{x|(x,y)\in S\}\),其中 \(S\) 为所有二元组构成的集合,那么必然有二元组 \((0,y),(1,y),(2,y),\cdots,(mx_y,y)\in…
题意:给定一个Y行X列的网格,网格种有重要位置和障碍物.要求用最少的机器人看守所有重要的位置,每个机器人放在一个格子里,面朝上下左右四个方向之一发出激光直到射到障碍物为止,沿途都是看守范围.机器人不会阻挡射线. “#”表示障碍物,“*”表示重要的位置,箭头表示最终机器人匹配的位置,求出机器人能够匹配出的最少位置个数. 分析:首先看题解是二分图匹配,但是建图目前还没想到呢.每个机器人绝对都在重要位置上,假设每个重要位置上都有机器人,可以保护哪几个重要物品.看是否能够匹配得来 #include<cs…
题意:每头奶牛都只愿意在她们喜欢的那些牛栏中产奶,告诉每头奶牛愿意产奶的牛棚编号,求出最多能分配到的牛栏的数量. 分析:直接二分图匹配: #include<stdio.h> #include<memory.h> #define MAX 202 bool flag,visit[MAX]; //记录V2中的某个点是否被搜索过 int match[MAX]; //记录与V2中的点匹配的点的编号 int cow, stall; //二分图中左边.右边集合中顶点的数目 int head[MA…
1433: [ZJOI2009]假期的宿舍 Time Limit: 10 Sec  Memory Limit: 162 MBSubmit: 2375  Solved: 1005[Submit][Status][Discuss] Description Input Output Sample Input 1 3 1 1 0 0 1 0 0 1 1 1 0 0 1 0 0 Sample Output ˆ ˆ HINT 对于30% 的数据满足1 ≤ n ≤ 12.对于100% 的数据满足1 ≤ n ≤…
先跑一个二分图匹配,然后一一删去匹配上的边,看能不能达到最大匹配数,不能这条边就是重要边 /*--------------------------------------------------------------------------------------*/ #include <algorithm> #include <iostream> #include <cstring> #include <ctype.h> #include <cst…
http://acm.hdu.edu.cn/showproblem.php?pid=1083 二分图匹配用得很多 这道题只需要简化的二分匹配 #include<iostream> #include<cstdio> #include<cstring> #define maxm 410 using namespace std; int p,n; int master[maxm]; int linking[maxm][maxm]; int has[maxm]; int sol…
Necklace/center> 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=5727 Description SJX has 2*N magic gems. N of them have Yin energy inside while others have Yang energy. SJX wants to make a necklace with these magic gems for his beloved BHB. To avoid…
题意: 判断一个黑白染色的棋盘能否通过交换行或列使对角线上都是黑色. SOL: 真是有点醉...这种问题要么很神要么很水...第一眼感觉很水但就是不造怎么做...想了10分钟怎么感觉就是判断个数够不够n呢然后就蹦出了一个反例...然后就忍不了百度= =... 二分图匹配真是瞎了眼...然后发现好神又好水... 显然的同一行无论怎么交换都是同一行---->根本就没往这上面想...同一列永远都是同一列,那么只要判断有多少不同行又不同列的就好了...枚举有点虚,那么就匹配吧!按照行列建图,恩就是这样.…
相当于用1*2的板覆盖给定的h*w的格子里的点,求最少的板.可以把格子相邻的分成两个集合,如下图,0为一个集合,1的为一个,也就是(行数+列数)为奇数的是一个集合,为偶数的为另一个集合.101010101010101010101两个集合分别代表男和女,能不能结婚,首先要看是不是异性,然后看是不是相邻的.所以就是用二分图匹配了.g[i][j]>0的表明i和j是相邻的.找出最大的配对数,然后总共需要的板就是点的总数-配对的对数. #include<cstdio> #include<cs…