P2372 yyy2015c01挑战算周长

题目背景

yyy2015c01快速的解决了问题,受到邻居们的赞许,高兴的回到家,把糖给了妈妈,吃了香喷喷的午饭,又睡了一个甜甜的午觉,感觉人生真美好。下午爸爸回到家,听说了yyy2015c01帮老师及邻居们解决了难题,准备带她去游乐场玩她平日最喜欢玩的跳舞机作为奖励,yyy2015c01听了,兴奋的一蹦三尺高。

题目描述

游乐场里人头攒动,每台跳舞机前都围满了人,怎么办呢?人这么多,想玩上估计要等好久了,yyy2015c01左顾右盼,突然发现一台跳舞机前面没人, “哈哈,被我发现一台没人的,赶快去……”,结果到了面前才发现这台新机器的玩法与众不同,脚下的格子随机位置显示出很多的“X”,踩到一个格子,就要根据规则先算出它对应的周长,然后把正确周长输入机器,最后的胜利者还可以获得游乐城的免费游戏券一张,yyy2015c01心动了,小朋友们,你们可以帮助yyy2015c01顺利拿到游戏券么?游戏规则如下:

新跳舞机踏板上有许多要分析的目标,由脚踩确定一个目标。目标边界的周长是一个有用的测量参数。编程任务:确定选中目标的周长。新跳舞机的踏板是一个矩形的网格,里面点'. ',表示空的地方;有大写字母'X',表示目标的一部分。简单网格如下图所示:

方格中的一个 X 是指一个完整的网格方形区域,包括其边界和目标本身。网格中心的 X 与其边界上 8 个方向的 X 都是相邻的。任何两个相邻的 X,其网格方形区域在边界或拐角处是重叠的,所以它们的网格方形区域是相邻的。一个目标是由一系列相邻 X 的网格方形区域连接起来构成的。在网格 1 中,一个目标填充了全部网格;在网格 2 中有两个目标,其中一个目标只占左下角的一个网格方形区域,其余的 X 属于另一个目标。

yyy2015c01总是能踩到一个 X,以选中包含该 X 的目标,记录脚踩时的坐标。行列号是从左上角开始,从 1 开始编号的。一个有用的统计参数是目标的周长。 假定每个 X 的每条边上有一个方形的单元。

目标中不会包含任何完全封闭的孔。

输入输出格式

输入格式:

共 M+1 行,第一行为四个正整数 M,N,X,Y(中间用空格隔开),表示网格的大小为 M 行,N 列,且踩中网格的第 X 行第 Y 列方格。后面就是 M 行,由字符'.'和'X'构成。

输出格式:

共一行,表示选中目标的周长。

输入输出样例

输入样例#1: 复制

2 2 2 2
XX
XX

输出样例#1: 复制

8

输入样例#2: 复制

6 4 2 3
.XXX
.XXX
.XXX
...X
..X.
X...

输出样例#2: 复制

18

说明

M(1≤M≤20),N(1≤N≤20),X(1≤X≤M),Y(1≤Y≤N)

思路:搜索。

#include<queue>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;
int n,m,tx,ty,ans;
char s[30];
int map[30][30],vis[30][30];
int dx[8]={1,-1,0,0,1,1,-1,-1};
int dy[8]={0,0,1,-1,1,-1,1,-1};
struct nond{int x,y;
};
queue<nond>que;
int main(){scanf("%d%d%d%d",&n,&m,&tx,&ty);for(int i=1;i<=n;i++){scanf("%s",s);for(int j=0;j<m;j++)if(s[j]=='X')    map[i][j+1]=1;}nond be;be.x=tx;be.y=ty;vis[tx][ty]=1;que.push(be);ans=4;while(!que.empty()){nond now=que.front();que.pop();for(int i=0;i<8;i++){int cx=now.x+dx[i];int cy=now.y+dy[i];if(cx>n||cx<1||cy>m||cy<1||!map[cx][cy])    continue;if(map[cx][cy]&&i<=3)    ans--;if(!vis[cx][cy]){ans+=4;vis[cx][cy]=1;nond tmp;tmp.x=cx;tmp.y=cy;que.push(tmp);}}}cout<<ans;
}

转载于:https://www.cnblogs.com/cangT-Tlan/p/7922992.html

洛谷 P2372 yyy2015c01挑战算周长相关推荐

  1. [洛谷P1856] [USACO5.5]矩形周长Picture

    洛谷题目链接:[USACO5.5]矩形周长Picture 题目背景 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长 ...

  2. 洛谷 P1957 【口算练习题】

    洛谷题目难度都是假的 读入:第一个用string读,判断是否是a,b,c,不是就用进制转换转成十进制数 位数:负数的负号也算一个!0也算一位!(特判或用dowhile) 下面是代码(没有写成子程序所以 ...

  3. 2018.12.5【WC2017】【LOJ2286】【洛谷P4604】挑战(卡常)

    洛谷传送门 LOJ传送门 解析: 目前LOJ速度rank1.但是洛谷上面有两个40msAC的在我前面(空间还小的出奇,估计连排序的数组都存不下)...估计是面向数据编程.. 说明:博主是一个高一OIE ...

  4. 洛谷——P1092 虫食算

    题目描述 所谓虫食算,就是原先的算式中有一部分被虫子啃掉了,需要我们根据剩下的数字来判定被啃掉的字母.来看一个简单的例子: 43#9865#045 + 8468#663344445509678 其中$ ...

  5. 洛谷P1856 [USACO5.5]矩形周长Picture

    题目背景 墙上贴着许多形状相同的海报.照片.它们的边都是水平和垂直的.每个矩形图片可能部分或全部的覆盖了其他图片.所有矩形合并后的边长称为周长. 题目描述 编写一个程序计算周长. 如图1所示7个矩形. ...

  6. 【洛谷】P1957 口算练习题【C++】

    口算练习题 题目描述 王老师正在教简单算术运算.细心的王老师收集了i道学生经常做错的口算题,并且想整理编写成一份练习. 编排这些题目是一件繁琐的事情,为此他想用计算机程序来提高工作效率.王老师希望尽量 ...

  7. 洛谷P1092 虫食算

    传送门 分析 看了一下题解,正解是高斯消元,然而我不会...... 于是--搜索! 但直接暴搜的复杂度是 \(O(n!)\) ,肯定会超时,所以需要一些剪枝. 考虑从右向左,从上至下枚举每个数的值. ...

  8. 洛谷P2370 yyy2015c01的U盘

    点击跳转了解题意 题解:分析一下这道题,发现价值并不是最重要的(因为只要过p就可以嘛),重要的是,最小的接口. 所以应用贪心策略,我们应该优先装接口(大小)小的,然后每次装完判断一下,当前价值是否超过 ...

  9. 信息学奥赛一本通 1965:【14NOIP普及组】珠心算测验 | 洛谷 P2141 [NOIP2014 普及组] 珠心算测验

    [题目链接] ybt 1965:[14NOIP普及组]珠心算测验 洛谷 P2141 [NOIP2014 普及组] 珠心算测验 [题目考点] 1. 枚举 [解题思路] 解法1:枚举判断每个数字是否是加和 ...

  10. 二分答案——yyy2015c01 的 U 盘(洛谷 P2370)

    题目选自洛谷P2370 两种解法,01背包+排序,或是直接二分即可 写了二分最后只有40的分...刚好过了给的四个样例 哭辽~想了半天不知道哪里错了 题目背景 在 2020 年的某一天,我们的 yyy ...

最新文章

  1. Java获取文件路径
  2. Python开发培训前景如何?
  3. 怎么在搭建Android开发环境?
  4. maven 指定jdk版本和编译版本.
  5. Effective Java之覆盖equal时要遵守通用约定(八)
  6. 用session实现html登录页面跳转页面跳转页面跳转,js判断登录与否并确定跳转页面的方法...
  7. 记录一次服务进程强行退出的问题排查过程
  8. jupyter报错Invalid credentials
  9. 如何改变tabcontrol控件背景色和标签字体和颜色_如何利用标签打印软件将网址信息转成带logo的二维码...
  10. 第十二周项目2 - 摩托车继承自行车和机动车
  11. CMD应用 qtp/winshell/cmd的交互
  12. Windows系统备份方法解答
  13. cass生成曲线要素_使用CASS6_0获取道路平曲线测设元素的解决方案.pdf
  14. AD7705在STM32F103RBT6上的移植[硬件SPI]
  15. 利用cobaltstrike加sqlmap拿下一个网站并提权
  16. 月薪20k+的Android面试都问些什么?完整PDF
  17. 分享 | NB-IoT智能井盖传感器
  18. LeetCode hot-100 简单and中等难度,61-70.
  19. 由index为timestamp的数据获取股票集合竞价数据
  20. 【华为机试真题 Python】跳格子游戏

热门文章

  1. OBJECT和EMBED标签(转载)
  2. 【IBM Tivoli Identity Manager 学习文档】14 TIM组织结构设计
  3. Linux下CGDB使用教程(转载)
  4. Process Explorer 诊断和排错实例(下)
  5. C++11 继承构造函数与委托构造函数
  6. 30. 最小的K个数(C++版本)
  7. 使用pscp在Linux、Windows间互传文件
  8. 有读二本国防计算机学校,好的二本计算机大学
  9. (day 35 - 自定义排序规则 )剑指 Offer 45. 把数组排成最小的数
  10. sqlparser mysql_phpMyAdmin中sql-parser组件的使用