pku3020 Antenna Placement (解法1)
1 #include<iostream> 2 using namespace std; 3 const int Row=45; 4 const int Line=15; 5 char str[Row][Line]; 6 bool cover[Row][Line]; 7 char dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1} ; 8 int h,w,cnt; 9 struct Link10 {11 int x,y; 12 }link[Row][Line];13 bool find (int py, int px) 14 { 15 int i, j ; 16 int x, y ; 17 for (i = 0 ; i < 4 ; ++i) 18 { 19 y = py + dir[i][0] ; 20 x = px + dir[i][1] ; 21 if ((0<x && x <=w && 0<y && y<=h) && !cover[y][x] && (str[y][x]=='*')) 22 { 23 cover[y][x] = true ; 24 if (!link[y][x].x || find (link[y][x].y, link[y][x].x)) 25 { 26 link[y][x].y = py ; 27 link[y][x].x = px ; 28 return 1 ; 29 } 30 } 31 } 32 return 0 ; 33 } 34 35 36 37 int mach()38 {39 int sum=0;40 for (int j = 1 ; j <=h ; ++j) 41 for (int i = 1 ; i <=w ; ++i) 42 { 43 if (str[j][i] == '*') 44 { 45 ++cnt ; 46 memset (cover, false, sizeof (cover)) ; 47 sum += find (j, i) ; 48 } 49 } 50 return cnt-sum/2; 51 }52 53 int main()54 {55 int k;56 scanf("%d",&k); 57 58 while(k--)59 {60 cnt=0;61 scanf("%d %d",&h,&w);62 memset(link,0,sizeof(link));63 for(int i=1;i<=h;i++)64 {65 scanf("%s",&str[i][1]);66 }67 printf("%d\n",mach());68 }69 70 return 0; 71 }
1 #include<iostream> 2 using namespace std; 3 const int Row=45; 4 const int Line=15; 5 char str[Row][Line]; 6 bool cover[Row][Line]; 7 char dir[4][2] = {1, 0, -1, 0, 0, 1, 0, -1} ; 8 int h,w,cnt; 9 struct Link10 {11 int x,y; 12 }link[Row][Line];13 bool find (int py, int px) 14 { 15 int i, j ; 16 int x, y ; 17 for (i = 0 ; i < 4 ; ++i) 18 { 19 y = py + dir[i][0] ; 20 x = px + dir[i][1] ; 21 if ((0<x && x <=w && 0<y && y<=h) && !cover[y][x] && (str[y][x]=='*')) 22 { 23 cover[y][x] = true ; 24 if (!link[y][x].x || find (link[y][x].y, link[y][x].x)) 25 { 26 link[y][x].y = py ; 27 link[y][x].x = px ; 28 return 1 ; 29 } 30 } 31 } 32 return 0 ; 33 } 34 35 36 37 int mach()38 {39 int sum=0;40 for (int j = 1 ; j <=h ; ++j) 41 for (int i = 1 ; i <=w ; ++i) 42 { 43 if (str[j][i] == '*') 44 { 45 ++cnt ; 46 memset (cover, false, sizeof (cover)) ; 47 sum += find (j, i) ; 48 } 49 } 50 return cnt-sum/2; 51 }52 53 int main()54 {55 int k;56 scanf("%d",&k); 57 58 while(k--)59 {60 cnt=0;61 scanf("%d %d",&h,&w);62 memset(link,0,sizeof(link));63 for(int i=1;i<=h;i++)64 {65 scanf("%s",&str[i][1]);66 }67 printf("%d\n",mach());68 }69 70 return 0; 71 }
转载于:https://www.cnblogs.com/tiankonguse/archive/2012/03/17/2403068.html
pku3020 Antenna Placement (解法1)相关推荐
- 二分图最大匹配(匈牙利算法) POJ 3020 Antenna Placement
题目传送门 1 /* 2 题意:*的点占据后能顺带占据四个方向的一个*,问最少要占据多少个 3 匈牙利算法:按坐标奇偶性把*分为两个集合,那么除了匹配的其中一方是顺带占据外,其他都要占据 4 */ 5 ...
- 【POJ - 3020】Antenna Placement (匈牙利算法,二分图最小边覆盖)
题干: The Global Aerial Research Centre has been allotted the task of building the fifth generation of ...
- Antenna Placement
题目描述: The Global Aerial Research Centre has been allotted the task of building the fifth generation ...
- (匹配 二维建图) Antenna Placement --POJ --3020
链接: http://poj.org/problem?id=3020 http://acm.hust.edu.cn/vjudge/contest/view.action?cid=82834#probl ...
- pku 3020 Antenna Placement
http://poj.org/problem?id=3020 求最小路径覆盖问题 ,对于有向图最小路径覆盖 = 一边的点数 (x集或y集)- 最大匹配 无向图最小路径覆盖 = 一边的点数 (x集或y集 ...
- poj 3020 Antenna Placement(二分图最大匹配)
题意: N行M列的矩阵,每个格子里不是 * 就是 O . * :是一个利益点. O:是一个空白点. 每次可以用一个圈覆盖相邻的两个*.(左右相邻或上下相邻). 问最少需要多少个圈可以覆盖所有的*. 思 ...
- POJ - 3020 Antenna Placement(最小路径覆盖-二分图最大匹配)
题目链接:点击查看 题目大意:给出一个n*m的地图,图中'o'代表空地,'*'代表城市,现在需要给城市装无线网,每个无线网最多可以覆盖相邻的两个城市,问覆盖所有的城市最少需要装多少个无线网 题目分析: ...
- POJ 3020 Antenna Placement
解题思路:求解最大独立集,转而求解最小顶点覆盖->最大流问题 #include <iostream> using namespace std; int t; int father[4 ...
- NC107617 poj3020 Antenna Placement
问题: n * m的矩阵,有一些障碍点,用12的骨牌覆盖所有非障碍点 (12骨牌可重叠,骨牌可越界,骨牌可延伸到障碍点) 问最少需要 多少个. 题解: • 尽量用一个骨牌覆盖两个格子,覆盖不了了再重叠 ...
最新文章
- 如何用DELPHI区分彩色图和黑白图(多色与单色)??
- 计算机网络【wireshark抓包分析】
- 第六十二节,html分组元素
- 大数据_Hbase-(知识点回顾)---Hbase工作笔记0010
- Object-C使用NSLog打印日志
- 从零开始学 Web 之 CSS(三)链接伪类、背景、行高、盒子模型、浮动
- 图解DbgView使用
- ## Manjaro的一站式安装流程(以kde版本为例)
- 干货|关于云计算认证升级内容
- 阿里内核月报2014年7月-8月
- 计算机网络hdcp是什么意思,韩立平:笔记本电脑上hdcp是干什么的?
- 只有单号,用这个方法自动识别快递公司,快速查询出物流
- 苹果搜索广告ASA开户教程
- 性能优化之mysql优化_性能优化之MySQL优化
- css中div的意思是什么
- Arduino与人体感应模块
- C语言程序设计(11.28)
- SAP CRM BOL collection find_by_property
- Windows安装VirtualBox教程(图文版)
- 软交换总结之五-GPRS相关:PCU与RPP的经典之作
热门文章
- QT中显示gif图片方法
- Ubuntu之镜像iso安装系统
- 为博客园博文添加目录的两种方法
- layer.js 使用
- POJ C程序设计进阶 编程题#3:运算符判定
- 压缩流--DeflateStream和GZipStream
- [转]深入理解 __doPostBack
- 第三届全国县域经济基本竞争力百强县(市)
- webview检测html事件,在JavaFX WebView中检测HTML textarea onkeyup事件
- springcloud 整合 gateway_GitHub上最火的SpringCloud微服务商城系统项目,附全套教程