Time Limit: 1 second

Memory Limit: 64 MB

【问题描述】

农夫 John 正在研究他的农场的卫星照片.照片为一个R (1<= R <= 75) 行C (1<=C<=75) 列的字符矩阵表示。如下图:

..................
..#####.......##..
..#####......##...
..................
#.......###.....#.
#.....#####.......

图上的一块相连通的 “#” 表示一群奶牛或一个房间, 两个子”#” 连通的意思是说左右或上下相连。而下面的两块则是分开的:

....
.#..
..#.
....

John现在根据卫星照片上的的这些”#”块的形状来判断哪些是牛群,哪些是房间。如果矩形内只有‘#’,则是房间。其它的则认

为都是牛群。在第一个图中,有三个房间 ( 2x1, 2x5, and 1x1)和2群牛。

根据输入文件的数据,统计出房间数和牛群数,数据中牛群不会包围另一个牛群或房间。

【输入格式】

第一行,两个整数: R 和 C. 和 2..R+1行: 第 i+1 行表示照片的第 i 行情况,由 C 字符组成。

【输出格式】

第一行: 房间数。 第二行: 牛群数。

【数据规模】

Sample Input1

5 8
#####..#
#####.##
......#.
.###...#
.###..##

Sample Output1

2

2

【题目链接】:http://noi.qz5z.com/viewtask.asp?id=u246

【题解】



题意:

让你求图中的连通块的形状是不是矩形、是矩形就为房子否则为牛群;

递增相应答案;

做法:

bfs、floodfill;

在做bfs的时候;记录你到过的横坐标最小的Minx和最大的maxx;以及最小的纵坐标miny以及最大的纵坐标maxy;

然后记录这个连通块内的格子数目;然后看一下minxminy以及maxxmaxy对应的矩形应该有的格子数目;如果想等,那么连通块为矩形;否则不是矩形;



【完整代码】

#include <iostream>
#include <queue>
#include <cstring>
#include <cstdio> using namespace std; const int MAXN = 110;
const int dx[5] = {0,0,0,1,-1};
const int dy[5] = {0,1,-1,0,0}; int n,m,fz = 0,nq = 0;
int a[MAXN][MAXN];
queue <pair<int,int> > dl; int main()
{
//freopen("F:\\rush.txt","r",stdin);
memset(a,0,sizeof(a));
cin >> n >> m;
for (int i = 1;i <= n;i++)
{
char key;
for (int j = 1;j <=m;j++)
{
cin >> key;
if (key == '#')
a[i][j] = 1;
else
a[i][j] = 0;
}
}
for (int i = 1;i <= n;i++)
for (int j = 1;j <= m;j++)
if (a[i][j]==1)
{
int minx=i,maxx=i,miny=j,maxy=j;
a[i][j] = 0;
int now = 1;
dl.push(make_pair(i,j));
while (!dl.empty())
{
int x = dl.front().first,y = dl.front().second;
dl.pop();
for (int p = 1;p <= 4;p++)
{
int tx = x+dx[p],ty = y+dy[p];
if (a[tx][ty])
{
now++;
minx = min(minx,tx);maxx = max(maxx,tx);
miny = min(miny,ty);maxy = max(maxy,ty);
a[tx][ty] = 0;
dl.push(make_pair(tx,ty));
}
}
}
int chang = maxy-miny+1;
int kuan = maxx-minx+1;
int total = chang*kuan;
if (total == now)
fz++;
else
nq++;
}
cout << fz<<endl;
cout << nq<<endl;
return 0;
}

【u246】卫星照片的更多相关文章

  1. google 高清卫星照片

    rel: 如何下载 50 年前自己家乡的高清卫星照片 link: https://zhuanlan.zhihu.com/p/30953275

  2. Google Map API V3开发(1)

    Google Map API V3开发(1) Google Map API V3开发(2) Google Map API V3开发(3) Google Map API V3开发(4) Google M ...

  3. hiho #1310 : 岛屿 (dfs,hash)

    题目2 : 岛屿 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给你一张某一海域卫星照片,你需要统计: 1. 照片中海岛的数目 2. 照片中面积不同的海岛数目 3. 照 ...

  4. 图像处理之image stitching

    背景介绍 图像拼接是一项应用广泛的图像处理技术.根据特征点的相互匹配,可以将多张小视角的图像拼接成为一张大视角的图像,在广角照片合成.卫星照片处理.医学图像处理等领域都有应用.早期的图像拼接主要是运用 ...

  5. Google Map和桌面组件 Android开发教程

    本文节选于机械工业出版社推出的<Android应用开发揭秘>一 书,作者为杨丰盛.本书内容全面,详细讲解了Android框架.Android组件.用户界面开发.游戏开发.数据存储.多媒体开 ...

  6. hihocoder 1310 岛屿

    #1310 : 岛屿 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 给你一张某一海域卫星照片,你需要统计: 1. 照片中海岛的数目 2. 照片中面积不同的海岛数目 3. ...

  7. 谷歌 google

    google Google是搜索引擎名,也是一家美国上市公司名称.Google公司于1998年9月7日以私有股份公司的形式创立,以设计并管理一个互联网的搜索引擎.Google公司的总部称作“Googl ...

  8. bzoj1681[Usaco2005 Mar]Checking an Alibi 不在场的证明

    Description A crime has been comitted: a load of grain has been taken from the barn by one of FJ's c ...

  9. Google帝国研究——Google的产业构成

                                                                                        Google帝国研究--Goog ...

随机推荐

  1. Oracel 格式化日期 to_char()

    select empno,ename,job,mgr,to_char(HIREDATE,'yyyy-mm-dd') as 入职日期,sal,comm,deptno from emp order by ...

  2. java中的九大隐藏变量.

          javax.servlet.jsp.JspWriter类型,代表输出流的对象.作用域为page(页面执行期) request:javax.servlet.ServletRequest的子类 ...

  3. [TypeScript] Model Alternatives with Discriminated Union Types in TypeScript

    TypeScript’s discriminated union types (aka tagged union types) allow you to model a finite set of a ...

  4. SQlite-数据库的访问实例(转)

    1.DBAdapter类: 1 package com.cnzcom.android.quickdial; import android.content.ContentValues; import a ...

  5. 体验SUSE (附视频演示)

    操作动画演示 本文出自 "李晨光原创技术博客" 博客,谢绝转载!

  6. 11. Linux——LCD驱动程序

    由上一节 得出写个LCD驱动入口函数,需要以下4步: 1) 分配一个fb_info结构体: framebuffer_alloc(); 2) 设置fb_info 3) 设置硬件相关的操作 4) 使能LC ...

  7. Appium_pytest fixture的使用

    一.定义fixture方法 # -*- coding:utf-8 -*-import pytestfrom baseutil.DriverUtil import DriverConfig @pytes ...

  8. 洛谷 P1054 等价表达式

    洛谷 P1054 等价表达式 题目描述 明明进了中学之后,学到了代数表达式.有一天,他碰到一个很麻烦的选择题.这个题目的题干中首先给出了一个代数表达式,然后列出了若干选项,每个选项也是一个代数表达式, ...

  9. 洛谷 P2384 最短路

    洛谷 P2384 最短路 题目背景 狗哥做烂了最短路,突然机智的考了Bosh一道,没想到把Bosh考住了...你能帮Bosh解决吗? 他会给你10000000000000000000000000000 ...

  10. oracle 日期

    http://blog.itpub.net/126211/viewspace-712986/