169. [USACO Feb07] 青铜莲花池

★   输入文件: bronlily.in   输出文件: bronlily.out    简单对比
时间限制:1 s   内存限制:128 MB


译 By CmYkRgB123

描述

Farmer John 建造了一个美丽的池塘,用于让他的牛们审美和锻炼。这个长方形的池子被分割成了 M 行和 N 列( 1 ≤ M ≤ 30 ; 1 ≤ N ≤ 30 ) 正方形格子的 。某些格子上有惊人的坚固的莲花,还有一些岩石,其余的只是美丽,纯净,湛蓝的水。

贝茜正在练习芭蕾舞,她从一个莲花跳跃到另一个莲花,当前位于一个莲花。她希望在莲花上一个一个的跳,目标是另一个给定莲花。她能跳既不入水,也不到一个岩石上。

门外汉惊讶的是,贝茜的每次的跳跃像国际象棋中的骑士一样:横向移动M1(1 ≤M1 ≤ 30 ),纵向移动然后量M2 (1 ≤M2 ≤ 30 ;M1 ≠ M2 ) ,或纵向移动然后量M1,横向移动M2。贝茜有时可能会有多达8个选择的跳跃。

给定池塘的布局和贝茜的跳跃格式,请确定贝茜从从她的出发位置,到最终目的地,最小的跳跃次数,贝茜在给出测试数据一定可以跳到目的地。

输入

  • 第 1 行: 四个用空格隔开的整数: M, N, M1, M2
  • 第 2..M + 1 行: 第 i + 1 行 有 N 个整数,表示该位置的状态: 0 为水; 1 为莲花; 2 为岩石; 3 为贝茜开始的位置; 4 为贝茜要去的目标位置.

输出

  • 第 1 行: 一个整数,从起始点到要去的位置,贝茜最小的跳跃次数。

样例输入

4 5 1 2
1 0 1 0 1
3 0 2 0 4
0 1 2 0 0
0 0 0 1 0

样例输出

2

输入解释

贝茜从第2行第1个位置开始,她的目标在第2行最右边。几个

输出解释

贝茜聪明地跳跃到了第1行第3个位置,然后就到了目的地。

基础搜索。

#include<cstdio>
#include<queue>
using namespace std;
const int maxn =33;
int map[maxn][maxn];
struct node{int x,y;int step;
}s_pos;
int m,n,m1,m2,step;
int sx,sy,ex,ey;
bool vis[maxn][maxn];
bool check(int x,int y){return x>=0&&x<m&&y>=0&&y<n;
}
void bfs(){int dx[]={-m1,-m1,m1,m1,-m2,-m2,m2,m2};int dy[]={m2,-m2,m2,-m2,m1,-m1,m1,-m1};queue<node> q;s_pos.x=sx; s_pos.y=sy; s_pos.step=0;q.push(s_pos);vis[sx][sy]=true;while(!q.empty()){node now = q.front();q.pop();if(now.x==ex&&now.y==ey){step=now.step;return;}for(int i=0;i<8;i++){int nx=now.x+dx[i];  int ny=now.y+dy[i];if(check(nx,ny)&&!vis[nx][ny]&&(map[nx][ny]==1||map[nx][ny]==4)){node next = now;next.x=nx;  next.y=ny;  next.step++;q.push(next);vis[nx][ny]=true;}}}
}
int main(){freopen("bronlily.in","r",stdin);freopen("bronlily.out","w",stdout);scanf("%d%d%d%d",&m,&n,&m1,&m2);for(int i=0;i<m;i++) for(int j=0;j<n;j++) scanf("%d",&map[i][j]);for(int i=0;i<m;i++){for(int j=0;j<n;j++){if(map[i][j]==3){sx=i;sy=j;}if(map[i][j]==4){ex=i;ey=j;}}}bfs();printf("%d\n",step);return 0;
}

[USACO Feb07] 青铜莲花池相关推荐

  1. 【USACO】青铜莲花池[2]

    前言 搜索到这篇文章的朋友,那么很巧了,我们多半是一个学校的,为什么呢?因为这道题叫白银莲花池.. 题目 [问题描述] FJ建造了一个美丽的池塘,用于让奶牛们锻炼.这个长方形的池子被分割成了 M 行和 ...

  2. 故事公园-—昆明莲花池

    每个公园都有自己的地理特征,奇风异俗,各存其韵.昆明莲花池公园则因几处遗址以及涉及的故事,让人们留连往返,奕奕不舍,他(她)们的故事让世人感叹! 这里的遗址其中有南明末代皇帝的墓地,陈圆圆的梳妆楼,现 ...

  3. 香港大屿山祈福线路攻略

    大屿山(Lantau Island),位于香港西南面,总面积达146.75平方公里,是中国境内面积第六大岛屿.是香港境内最大的岛屿,也是万山群岛中面积最大岛,大屿山最有名的是坐落于大屿山宝莲寺的天坛大 ...

  4. 涨姿势!北京地铁原来是16条旅游专线

    学姐按:周末想带孩子玩,又没太多时间.好不容易有时间出去了,结果半天都被堵在了路上,这让很多家长每逢周末必发愁.为什么不换种方式出行呢?北京的地铁的里程越来越长,殊不知所经之处有很多的大小景点可以玩. ...

  5. 待得天晴花已老,不如携手雨中看

    东风未放晓泥干,红药花开不耐寒.待得天晴花已老,不如携手雨中看. <<雨中赏牡丹>>   唐·窦梁宾 认识她的时候,被她脸上无忧无虑的笑容深深打动.我觉得她就是那种看一辈子,仍 ...

  6. 更愿意思念更早的“金陵”

    写过了长安城,总有些未舍之意.念一曲元人张可久的散曲,"阿房舞殿翻罗袖,金谷名园起玉楼,隋堤古柳缆龙舟.不堪回首,东风还又,野花开暮春时候.美人自刎乌江岸,战火曾烧赤壁山.将军空老玉门关.伤 ...

  7. NOIP模拟测试19

    T1: 题目大意:将一颗有N个节点的树分割,使得每个联通块大小相等,问一共有多少方案.(N<=1000000) 首先,一条很显然的性质,每个联通块的大小一定是N的因子. 然后,我们可以对于每个因 ...

  8. Bittersweet——NOIP2018 游记

        读者,也许你一向没有浏览网页戴耳机的习惯,但这一次的背景音乐列表,每一首都由 Capella 精心选择,乐曲长度与排列顺序也都经过认真安排.恳请你戴上耳机调至舒适的音量,伴着这作为游记一部分的 ...

  9. SpringBoot+Mybatis+Vue整合

    创建springboot项目 添加分页依赖等 <?xml version="1.0" encoding="UTF-8"?> <project ...

最新文章

  1. 人群密度估计--Structured Inhomogeneous Density Map Learning for Crowd Counting
  2. HDU-1452 因子和 积性函数性质
  3. shell编程之特殊变量
  4. c/c++如何正确使用结构体?
  5. Enum枚举类|注解Annotation
  6. php软件开发--memcache缓存内存对象分布式系统
  7. mysql与win8有冲突吗_Win8系统Defender功能和安全软件冲突怎么办
  8. Excel-VBA操作文件四大方法之三(3/4)
  9. if __name__ == __main__如何正确理解
  10. docker 拷贝镜像文件
  11. labelImg安装小记
  12. 交互式电子杂志_快速的创建交互式演示和翻转电子书工具-XFlip Enterprise(电子杂志相册制作器) V2.0.5.0 中文版 - 未来软件园...
  13. mysql 建模工具 mac_MySQL Workbench for Mac 6.0 下载 - Mac上优秀的数据库建模工具 | 玩转苹果...
  14. lcd12864资料
  15. speex回声消除源码解读
  16. PROFINET转CAN网关监测CAN设备在线设置文档
  17. 报告显示,宝爸参与度不断提升,超三成男性提前服用营养品备孕
  18. bam文件读取_把bam文件读入R,并且转为grange对象
  19. 修复我的世界ice服务器的指令,我的世界 基岩版:服务器清理命令
  20. Java Swing 设置全局的字体

热门文章

  1. eclipse中自定义快捷键保存位置.
  2. NVL与NVL2函数
  3. #99-【桶排序】摩天楼
  4. react路由跳转传参
  5. Python阶乘计算
  6. python期末大作业 800行_python第三次周末大作业
  7. python 自定义异常类_python 自定义异常类的使用,继承Exception
  8. Flutter动画(全)
  9. mysql备份要注意哪些_MySQL数据库备份过程的注意事项
  10. Java中char,short,int,long占几个字节和多少位