围成面积

围成面积

链接:http://ybt.ssoier.cn:8088/problem_show.php?pid=1359
时间限制: 1000 ms         内存限制: 65536 KB

【题目描述】

编程计算由“*”号围成的下列图形的面积。面积计算方法是统计*号所围成的闭合曲线中水平线和垂直线交点的数目。如下图所示,在10*10的二维数组中,有“*”围住了15个点,因此面积为15。

【输入】

10×10的图形。

【输出】

输出面积。

【输入样例】

0 0 0 0 0 0 0 0 0 0
0 0 0 0 1 1 1 0 0 0
0 0 0 0 1 0 0 1 0 0
0 0 0 0 0 1 0 0 1 0
0 0 1 0 0 0 1 0 1 0
0 1 0 1 0 1 0 0 1 0
0 1 0 0 1 1 0 1 1 0
0 0 1 0 0 0 0 1 0 0
0 0 0 1 1 1 1 1 0 0
0 0 0 0 0 0 0 0 0 0

【输出样例】

15
#include<iostream>
#include<cstring>
#include<cstdio>
#include<queue>
using namespace std;
int a[105];
bool b[105];
int zl[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
int mp[15][15];
struct node{
    int x,y;
    node():x(),y(){}
    node(const int x,const int y):x(x),y(y){}
};
queue <node>Q;
int t=1,ans;
void bfs(int x,int y)
{
    mp[x][y]=++t;
    a[t]++;
    Q.push(node(x,y));
    while(!Q.empty())
    {
        node u=Q.front();
        Q.pop();
        for(int i=0;i<4;i++)
        {
            int xx=u.x+zl[i][0],yy=u.y+zl[i][1];
            if(xx>0&&xx<=10&&yy>0&&yy<=10&&!mp[xx][yy])
            {
                mp[xx][yy]=t;
                a[t]++;
                Q.push(node(xx,yy));
            }
        }
    }
}
int main()
{
    for(int i=1;i<=10;i++)
        for(int j=1;j<=10;j++)
            cin>>mp[i][j];
    for(int i=1;i<=10;i++)
        for(int j=1;j<=10;j++)
        if(!mp[i][j])
            bfs(i,j);
    for(int i=1;i<=10;i++)b[mp[i][1]]=1;
    for(int i=1;i<=10;i++)b[mp[i][10]]=1;
    for(int i=1;i<=10;i++)b[mp[10][i]]=1;
    for(int i=1;i<=10;i++)b[mp[1][i]]=1;
    for(int i=2;i<=9;i++)
        for(int j=2;j<=9;j++)
            if(!b[mp[i][j]]&&mp[i][j]!=1)
            {
                b[mp[i][j]]=1;
                ans+=a[mp[i][j]];
            }

    cout<<ans<<endl;

}
时间: 2024-11-08 18:15:44

围成面积的相关文章

Agent J(求三个圆围成的区域面积)

A - A Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%lld & %llu Submit Status Practice LightOJ 1331 Description Agent J is preparing to steal an antique diamond piece from a museum. As it is fully guarded and they are guarding it usi

300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子

public static void main(String[] args) { /* * 300个人围成一个圈,从某个指定的人开始报数(1--3),凡是数到3的人退出圈子, * 问最后剩下的一个是从指定位置开始计数的第几个人? */ int num[]=new int[300]; int i=0; // 数组的下标计数器 0---299 int count=0; // 退出的人数计数器 0---299 int n=1; // 数数的计数器 1---3 while(count<299){ //

[再寄小读者之数学篇](2014-10-27 两曲面围成的区域的体积与表面积)

(from M.J. Shu) 设立体 $\vSa$ 由 $x^2+y^2=2z$ 与 $z=4-\sqrt{x^2+y^2}$ 围成, 求 $\vSa$ 的体积与表面积. 解答: 该区域由旋转抛物面与圆锥面围成. 所求体积为 $$\beex \bea V&=\int_0^2 \pi \cdot 2z\rd z +\int_2^4 \pi \cdot (4-z)^2\rd z\\ &\quad\sex{x^2+y^2=2z,\quad x^2+y^2=(4-z)^2}\\&=4\p

hdu 2841 树围成矩阵,人在(0,0)点,最多可看到几棵树

题意:有一个n*m的矩阵上布满了树(矩阵从(1,1)开始),现在有一个农夫站在(0,0)点,问农夫可以看到多少棵树,其中如果这些树在一条线上那么只能看到最前面的那棵树,这个一开始看到确实蒙了..看了题解其实是挺简单的.首先考虑只能看到一条线上最前面的那棵树这个条件,对于坐标 比如 (2,3)(4,6)(6,9)..等 这些坐标是在一条直线上的 可以看出其除了(2,3) 其他的都是由(2,3)的x坐标*k y坐标*k 得到的, 拓展出来就是对于 任意坐标 (x,y) 令a=x/gcd(x,y) b

500个小朋友手拉手围成一个圈,依次按1、2、3报数,报到3的出列,最后一个留在圈里的是第几个?

public class Count3Quit{ //从数组的角度 public void m1(){ boolean[] child = new boolean[500]; for(int i=0;i<child.length;i++){ child[i] = true; } int count = 0; int left = child.length; int index = 0; while(left > 1){ if(child[index]){ count++; } if(count

POJ1654 Area(多边形面积)

题目链接: http://poj.org/problem?id=1654 题目描述: Area Description You are going to compute the area of a special kind of polygon. One vertex of the polygon is the origin of the orthogonal coordinate system. From this vertex, you may go step by step to the

模糊PID控温算法的具体实现(一):参数自整定模糊PID算法概念

上个学期已经基本上实现了PID的温控算法,为了撰写小论文,这个学期最先要做的事情就是实现模糊PID的温控算法. 模糊控制系统的构成与与常规的反馈控制系统的主要区别在于控制器主要是由模糊化,模糊推理机和精确化三个功能模块和知识库(包括数据库和规则库)构成的.具体实现过程如下所示: (1)预处理: 输入数据往往是通过测量设备测量得到的一个具体数据,预处理就是在它们进入控制器前对这些数据进行分类,或性质程度的定义.预处理过程也是量化过程,它是在离散空间中把输入数据划分为若干个数字级别.例如,假设一个反

D. Vasya and Triangle

传送门 [http://codeforces.com/contest/1030/problem/D] 题意 在第一象限,x,y得坐标上限是n,m,再给你个k,让你找3个整数点,使得围成面积德语(n*m)/k,没有输出NO 分析 有解析几何,由3个点坐标求面积公式S=(1/2)|(x2-x1)(y3-y1)-(x3-x1)(y2-y1)|=(nm)/k 所以2(nm)/k为整数时必有解,不然没有. 假设分别为(0,0),(a,0),(0,b) 2(nm)/k为整数时,gcd(2n,k)==1,或者

【POJ 1408】 Fishnet (叉积求面积)

[POJ 1408] Fishnet (叉积求面积) 一个1*1㎡的池塘 有2*n条线代表渔网 问这些网中围出来的最大面积 一个有效面积是相邻两行和相邻两列中间夹的四边形 Input为n 后面跟着四行 每行n个浮点数 每一行分别代表a,b,c,d 如图 并且保证a(i) > a(i-1) b(i) > b(i-1) c(i) > c(i-1) d(i) > d(i-1) n(n <= 30)*2+4(四个岸)条边 枚举点数就行 相邻的四个四个点枚举 找出围出的最大面积 找点用