hdu 1507
求能出售多少个1*2的矩形,,将原图染色,(i+j)%2==0的染白色,其余为黑色,
求白色跟黑色的最大匹配
#include<stdio.h>
#include<string.h>
int n,m,ma[105][105],mark[105][105];
int dir[4][2]={-1,0, 0,-1, 1,0, 0,1};
struct linky
{
int x;
int y;
}link[105][105];
int pd(int x,int y)
{
if(x>=1&&x<=n&&y>=1&&y<=m)
return 1;
return 0;
}
int find(int x,int y)
{
int i,a,b;
for(i=0;i<4;i++)
{
a=x+dir[i][0];
b=y+dir[i][1];
if(pd(a,b)&&ma[a][b]==0&&mark[a][b]==0)
{
mark[a][b]=1;
if(link[a][b].x==0||find(link[a][b].x,link[a][b].y)==1)
{
link[a][b].x=x;
link[a][b].y=y;
return 1;
}
}
}
return 0;
}
int main()
{
int i,t,x,y,sum,j,temp=0;
while(scanf("%d%d",&n,&m),m&&n)
{
sum=0;
memset(ma,0,sizeof(ma));
memset(link,0,sizeof(link));
scanf("%d",&t);
for(i=1;i<=t;i++)
{
scanf("%d%d",&x,&y);
ma[x][y]=1;
}
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
{
if(ma[i][j]==0&&(i+j)%2==0)//(i+j)/2对原图染色,不同颜色间匹配
{
memset(mark,0,sizeof(mark));
sum=sum+find(i,j);
}
}
if(temp++>0)
printf("\n");
printf("%d\n",sum);
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
if(link[i][j].x)
printf("(%d,%d)--(%d,%d)\n",i,j,link[i][j].x,link[i][j].y);
}
return 0;
}
hdu 1507的更多相关文章
- HDU 1507 Uncle Tom's Inherited Land(最大匹配+分奇偶部分)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1507 题目大意:给你一张n*m大小的图,可以将白色正方形凑成1*2的长方形,问你最多可以凑出几块,并输 ...
- HDU 1507 Uncle Tom's Inherited Land*(二分图匹配)
Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- Hdu 1507 Uncle Tom's Inherited Land* 分类: Brush Mode 2014-07-30 09:28 112人阅读 评论(0) 收藏
Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1507 Largest Rectangle in a Histogram 动态规划计算最大面积
记录动态规划dpl,dpr,分辨记录i左面的比i大的,右面比i大的,然后(dpr[i]-dpl[i]+1)*h[i]得出长度 动态转移方程while(temp>1 && h[te ...
- HDU 1507 Uncle Tom's Inherited Land*
题目大意:给你一个矩形,然后输入矩形里面池塘的坐标(不能放东西的地方),问可以放的地方中,最多可以放多少块1*2的长方形方块,并输出那些方块的位置. 题解:我们将所有未被覆盖的分为两种,即分为黑白格( ...
- hdu 1507 记录路径的二分匹配 **
题意:N*M的矩形,向其中填充1*2的小块矩形,黑色的部分不能填充,问最多可以填充多少块.链接:点我 黑白棋最大匹配 将棋盘中i+j为奇数的做A集合,偶数的做B集合,相邻的则建立联系.于是便转换成寻找 ...
- HDU 1507 Uncle Tom's Inherited Land*(二分匹配,输出任意一组解)
Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- hdu 1507(二分图匹配)
Uncle Tom's Inherited Land* Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (J ...
- HDU题解索引
HDU 1000 A + B Problem I/O HDU 1001 Sum Problem 数学 HDU 1002 A + B Problem II 高精度加法 HDU 1003 Maxsu ...
随机推荐
- 移动客户端与服务端Session那点秘密
众所周知,做过Web开发的小伙伴可能知道,在浏览器向服务器发一个请求,服务器端会为当前的访问者创建一个session会话,随着浏览器的关闭而会话结束.但是移动客户端咋整呢(IOS/Android啥的) ...
- 一道关于CSS选择器优先级的题
<span style="font-size:14px;"><html> <head> <style type="text/cs ...
- Java项目生成静态页面
第一次做项目需要生成静态页面,网上很多大牛对将网页生成静态页面有很多异议.说一下我的看法. 不外乎有以下因素: 1.从页面加载时间来看:静态页面不需要与数据库建立连接,尤其是访问数据量较大的页面,这种 ...
- 如何实现TWaver 3D颜色渐变
一般而言,须要实现3D物体的渐变,通常的思路就是通过2D绘制一张渐变canvas图片作为3D对象的贴图.这样的方式是能够解决这类问题的.只是对于一般用户而言,通过2D生成一张渐变的图片.有一定的难度, ...
- js获取编辑框游标的位置
代码如下: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w ...
- mysql查询字段值为数字
原文:mysql查询字段值为数字 我想查询字段值为数字的sql如下:select * from tj_item_result where tj_value REGEXP '^[0-9]'
- 【转】android中TextAppearanceSpan的使用
android中TextAppearanceSpan的使用 Posted on April 17, 2011 在android中如何想word中一样对文字进行丰富的风格设置呢? TextAppeara ...
- 自己动手实现Expression翻译器 – Part Ⅲ
上一节实现了对TableExpression的解析,通过反射创建实例以及构建该实例的成员访问表达式生成了一个TableExpression,并将其遍历格式化为”Select * From TableN ...
- WCF服务最近经常死掉
系统上线后WCF服务最近经常死掉的原因分析总结 前言 最近系统上线完修改完各种bug之后,功能上还算是比较稳定,由于最近用户数的增加,不知为何经常出现无法登录.页面出现错误等异常,后来发现是由于W ...
- Mvc的多层架构
分享一个Mvc的多层架构,欢迎大家拍砖斧正 多层架构是什么? 多层架构是开发人员在开发过程当中面对复杂且易变的需求采取的一种以隔离控制为主的应对策略,关于多层架构的标准,我认为有一句话是比较有代表 ...