青岛理工ACM交流赛 J题 数格子算面积

数格子算面积

Time Limit: 1000MS Memory limit: 262144K

题目描述

给你一个多边形(用’\’和’/’表示多边形的边),求多边形的面积。

输入

第一行两个正整数h 和 w (2 ≤ h, w ≤ 100),h是多边形所在平面的高,w是多边形所在平面的宽,接下来h行,每行w个字符,描述了整个平面的每个单元(每个单元是一个单位面积),字符只会是’\’,’/’和’.’其中之一,’\’,’/’表示多边形的边,’.’表示空白单元。

输出

输出一个数,输入代表的平面内多边形的单位面积。

示例输入

4 4
/\/\../
.\...\/

示例输出

8

提示

来源

青岛理工交流赛

算法分析:一开始以为此题目不简单,但经过仔细分析后原来是道水题!

对于初始的图案,要么是 图形外,要么是图形内! 而我们要计算的是 图形内的面积。

(1)如果该行 全是‘.’的图案,说明这行绝对没在图形内。

(2)对于当前的这行,从左边是开始找到一个‘/’ 或者‘\’的字符, 说明这是 图形在该行的边。 同理在该行再从 右边往左找到一个‘/’ 或者 ‘\’ 的字符。  说明这是在该行上的右边的边。 只要把每行上的这样的面积累加就是最后的总面积。

(3)‘/’ 和‘\’的字符对总面积的贡献是 半个, 而字符‘.’ 对总面积的贡献是 1个。

/\/\   // 对于该行第一字符就是‘/’,说明这是左边,第四个字符‘\’是右边, 该行的面积是:半个+半个+半个+半个
\../   // 该行的面积是:半个+1个+1个+半个
.\.\   // 该行的面积是:0 + 半个+1个+半个
..\/   // 该行的面积是:0 + 0 +半个+半个

         (4)最后边个的总数别忘了除2 !

   代码如下:
#include <iostream>
#include <string>
#include <stdio.h>
#include <string.h>
#include <algorithm>

using namespace std;

char map[200][200];

int main()
{
    int n, m;
    int i, j, k;
    int dd;
    int bn, zh, area;

    while(scanf("%d %d", &n, &m)!=EOF)
    {
        for(i=0; i<n; i++)
        {
            scanf("%s", map[i] );
        }
        bn=0;
        zh=0;
        area=0;
        for(i=0; i<n; i++)
        {
            j=0;
            while(map[i][j]==‘.‘ && j<m )
            {
                j++;
            }
            if(j==m-1)
            {
                continue;
            }
            dd=m-1;
            while(map[i][dd]==‘.‘ && dd>=0 )
            {
                dd--;
            }

            for(k=j; k<=dd; k++)
            {
                if(map[i][k]==47 || map[i][k]==92 )
                {
                    bn++;
                }
                else
                {
                    zh++;
                }
            }
        }
        area=bn/2+zh;
        cout<<area<<endl;
    }
    return 0;
}

  

时间: 2024-10-14 03:49:12

青岛理工ACM交流赛 J题 数格子算面积的相关文章

Sdut 2416 Fruit Ninja II(山东省第三届ACM省赛 J 题)(解析几何)

Time Limit: 5000MS Memory limit: 65536K 题目描写叙述 Haveyou ever played a popular game named "Fruit Ninja"? Fruit Ninja (known as Fruit Ninja HD on the iPad and Fruit Ninja THD for NvidiaTegra 2 based Android devices) is a video game developed by Hal

2018 FJUT ACM 校赛 j题 外传:魔王打工记(一)

外传:魔王打工记(一) TimeLimit:1000MS  MemoryLimit:128MB 64-bit integer IO format:%lld Problem Description 话说Home_W大魔王手下有四大天王: 首席战神--赛文斯,SoftWork首席科学家--布莱克,首席军师--金金金,首席狙击手--超无聊,首席苦力--小明. 然而,这些部下个个都是饭桶,把Home_W都快吃穷.虽然Home_W嘴上说:打工是不可能打工的,这辈子不可能打工的.烧杀抢又不会做,就只有当正义

第十届山东省acm省赛补题(2)

http://acm.zju.edu.cn/onlinejudge/showProblem.do?problemCode=4124 L Median Time Limit: 1 Second      Memory Limit: 65536 KB Recall the definition of the median of  elements where  is odd: sort these elements and the median is the -th largest element.

sdut 2603 Rescue The Princess(算是解析几何吧)(山东省第四届ACM省赛A题)

题目地址:sdut 2603 Rescue The Princess Time Limit: 1000ms   Memory limit: 65536K  有疑问?点这里^_^ 题目描述 Several days ago, a beast caught a beautiful princess and the princess was put in prison. To rescue the princess, a prince who wanted to marry the princess

西电校赛网络赛J题 lucas定理计算组合数

西电校赛网络赛J题  lucas定理计算组合数 问题 J: 找规律II 时间限制: 1 Sec  内存限制: 128 MB 提交: 96  解决: 16 [提交][状态][讨论版] 题目描述 现有数阵如下: 1    2  3   4     5    6 1   3   6  10  15 1   4  10   20 1   5   15 1    6 1 求这个数阵的第n行m列是多少(行列标号从1开始) 结果对10007取模 输入 多组数据,每组数据一行,包含两个整数n,m(1<=n<=

浙江2012年省赛J题 Modular Inverse

Modular Inverse Time Limit: 2000MS   Memory Limit: 65535KB   64bit IO Format: Submit Status Description The modular modular multiplicative inverse of an integer a modulo m is an integer x such that a-1≡x (mod m). This is equivalent to ax≡1 (mod m). I

青岛理工交流赛 H题 素数间隙

13110581088注销 素数间隙 Time Limit: 1000MS Memory limit: 262144K 题目描述 Neko猫是一个很喜欢玩数字游戏的会说话的肥猫,经常会想到很多很好玩的数字游戏,有一天,它想到一个叫做素数间隙的游戏.据Neko猫的定义,素数间隙是两个相邻素数p和q组成的开区间[p, q),所以素数间隙的长度就是q-p. 例如7和11在素数表里是两个相邻的素数,所以7和11的素数间隙的长度为11-7,为4. 现在Neko猫会给你很多个正整数K(1<K≤1299710

青岛理工大学第五届ACM交流赛 部分题解

A:后缀维护si*pi的最小值,查询的时候二分,判断后缀和当前两个部分就行. 1 #include <bits/stdc++.h> 2 using namespace std; 3 4 typedef long long LL; 5 const int maxn = 100100; 6 int n, m; 7 LL s[maxn], p[maxn]; 8 LL suf[maxn]; 9 10 int main() { 11 // freopen("in", "r&

[ACM] zoj 3818 Pretty Poem (2014 ACMICPC Regional 牡丹江站网络赛 J题)

Pretty Poem Time Limit: 2 Seconds      Memory Limit: 65536 KB Poetry is a form of literature that uses aesthetic and rhythmic qualities of language. There are many famous poets in the contemporary era. It is said that a few ACM-ICPC contestants can e