hdu 4619 Warm up 2
http://acm.hdu.edu.cn/showproblem.php?pid=4619
根据题意可知,每一个方格可能只被一个骨牌覆盖 可能被两个骨牌覆盖 也可能不被覆盖
有一个骨牌覆盖的方格(单覆盖方格)为我们刚开始要找的方格
遍历 每当找到一个单覆盖方格 我们就将这个方格上的骨牌保留
保留这个骨牌的话 有可能会排斥另一个骨牌 如果有排斥的骨牌的话 就将排斥的骨牌去掉
去掉排斥的骨牌 可能产生新的单覆盖方格,则递归下去
最后把所有单覆盖方格处理完 剩下的可能全是双覆盖方格,如果有的话,剩下的骨牌通过覆盖肯定形成了环
这些双覆盖方格每个都会最终保留半个骨牌
代码:
#include<iostream>
#include<cstdio>
#include<string>
#include<cstring>
#include<cmath>
#include<set>
#include<map>
#include<stack>
#include<vector>
#include<algorithm>
#include<queue>
#include<bitset>
#include<deque>
#include<numeric> //#pragma comment(linker, "/STACK:1024000000,1024000000") using namespace std; typedef long long ll;
typedef unsigned int uint;
typedef pair<int,int> pp;
const double eps=1e-9;
const int INF=0x3f3f3f3f;
const ll MOD=1000000007;
const int N=110;
int X[]={-1,1,0,0};
int Y[]={0,0,1,-1};
int a[N][N];
int d[N][N][4];
int ans;
void dfs(int i,int j)
{
for(int l=0;l<4;++l)
if(d[i][j][l]==1)
{
int x=i+X[l];
int y=j+Y[l];
{
d[i][j][l]=0;
d[x][y][l^1]=0;
--a[i][j];
--a[x][y];
++ans;
if(a[x][y]==1)
{
for(int r=0;r<4;++r)
if(d[x][y][r]==1)
{
int x1=x+X[r];
int y1=y+Y[r];
{
d[x][y][r]=0;
d[x1][y1][r^1]=0;
--a[x][y];
--a[x1][y1];
if(a[x1][y1]==1)
dfs(x1,y1);
}
}
}
}
}
}
int main()
{
//freopen("data.in","r",stdin);
int n,m;
while(scanf("%d %d",&n,&m)!=EOF)
{
if(!n&&!m) break; memset(a,0,sizeof(a));
memset(d,0,sizeof(d));
while(n--)
{
int i,j;
scanf("%d %d",&i,&j);
d[i][j][1]=1;
d[i+1][j][0]=1;
++a[i][j];
++a[i+1][j];
}
while(m--)
{
int i,j;
scanf("%d %d",&i,&j);
d[i][j][2]=1;
d[i][j+1][3]=1;
++a[i][j];
++a[i][j+1];
}
ans=0;
for(int i=0;i<=101;++i)
for(int j=0;j<=101;++j)
if(a[i][j]==1)
{
dfs(i,j);
}
int tmp=0;
for(int i=0;i<=101;++i)
for(int j=0;j<=101;++j)
tmp+=a[i][j];
ans+=tmp/4;
printf("%d\n",ans);
}
return 0;
}
hdu 4619 Warm up 2的更多相关文章
- hdu 4619 Warm up 2(并查集)
借用题解上的话,就是乱搞题.. 题意理解错了,其实是坐标系画错了,人家个坐标系,我给当矩阵画,真好反了.对于题目描述和数据不符的问题,果断相信数据了(这是有前车之鉴的hdu 4612 Warm up, ...
- HDU 4619 Warm up 2 最大独立集
Warm up 2 题目连接: http://acm.hdu.edu.cn/showproblem.php?pid=4619 Description Some 1×2 dominoes are pla ...
- hdu 4619 Warm up 2 (二分匹配)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4619 题意: 平面上有一些1×2的骨牌,每张骨牌要么水平放置,要么竖直放置,并且保证同方向放置的骨牌不 ...
- HDU 4619 Warm up 2(2013多校2 1009 二分匹配)
Warm up 2 Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 65535/32768 K (Java/Others)Total S ...
- hdu 4619 Warm up 2 ( 二分图最大匹配 )
题目:Warm up 2 题意:有横竖两种方式放着的多米诺骨牌,相同方向的不可能重叠,但是横放和竖放 的牌可能重叠.移走重叠的牌使剩下的牌最多. 分析:二分图匹配:最大独立集= ...
- hdu 4619 Warm up 2 网络流 最小割
题意:告诉你一些骨牌,然后骨牌的位置与横竖,这样求最多保留多少无覆盖的方格. 这样的话有人用二分匹配,因为两个必定去掉一个,我用的是最小割,因为保证横着和竖着不连通即可. #include <s ...
- hdu 4619 Warm up 2_最大独立集
三个人整个下午都想不出这题 后来看题解,竟然用匈牙利算法的最大独立集,我顿时晕了. 题意:给竖着和横着的方块,除去重叠的,最多能留下几个方块 #include <cstdlib> #inc ...
- hdu 4619 Warm up 2 二分图匹配
题目链接 给两种长方形, 水平的和垂直的, 大小都为1*2, n个水平的, m个垂直的, 给出它们的坐标. 水平的和垂直的可以相互覆盖, 但是同种类型的没有覆盖. 去掉一些长方形, 使得剩下的全部都没 ...
- HDU 4619 Warm up 2 贪心或者二分图匹配
给同一张横着的牌的所在的格子编同一样的号,这些格子对应x集合,给同一张竖着的牌所在的格子编同一样的号,对应y集合,同一个格子上既有横着的牌又有竖着的牌,那么就建一条边,有冲突就要拿走一张,结果是总的牌 ...
随机推荐
- 13 SELECT 以外的内容
Insert 直接路径法 这种方法不去查找已有块中的空间, 它直接从高水位之上开始插入数据. 直接使用的是 nologging模式, 记住默认情况下通过直接路径插入进行加载的表上的索引仍然是会产生un ...
- poj2002Squares(点集组成正方形数)
链接 可以枚举两个点,因为是正方形两外两点可以由已知求出,据说可以根据三角形全等求出下列式子,数学渣不会证... 已知: (x1,y1) (x2,y2) 则: x3=x1+(y1-y2) y ...
- iOS开发之 xcode6 APP 打包提交审核详细步骤
一. 在xcode6.1和ios10.10.1环境下实现app发布 http://blog.csdn.net/mad1989/article/details/8167529 http://jingya ...
- Android入门:绑定本地服务
一.绑定服务介绍 前面文章中讲过一般的通过startService开启的服务,当访问者关闭时,服务仍然存在: 但是如果存在这样一种情况:访问者需要与服务进行通信,则我们需要将访问者与服务进行绑定: ...
- JavaScript的事件对象_概述/this
JavaScript 事件的一个重要方面是它们拥有一些相对一致的特点,可以给你的开发提供更多的强大功能. 最方便和强大的就是事件对象,他们可以帮你处理鼠标事件和键盘敲击方面的情况,此外还可以修改一般事 ...
- Maven打包遇到的一些问题(zhuan)
http://qqbwww.iteye.com/blog/2042307 **************************************** #Maven打包遇到的一些问题 ## 1.将 ...
- JavaScript中Cookie的用法
Javascript中Cookie主要存储于客户端的计算机中,用于存放已访问的站点信息,Cookie最大约为4k.以下实例主要用于页面在刷新时保存数据,具体的用法如下所示: <html> ...
- zookeeper错误
ZooKeeper JMX enabled by defaultUsing config: /data4/hadoop/zookeeper-3.4.8/bin/../conf/zoo.cfgError ...
- Hbase之取出行数据指定部分(类似MySQL的Limit)
import org.apache.hadoop.conf.Configuration; import org.apache.hadoop.hbase.CellScanner; import org. ...
- XML Attributes(XML属性)
XML Attributes(XML属性) android:autoLink 是否自动链接网址或邮箱地址: android:autoText 自动检测错误: android:bufferType ...