[USACO Feb07] 青铜莲花池
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] 青铜莲花池相关推荐
- 【USACO】青铜莲花池[2]
前言 搜索到这篇文章的朋友,那么很巧了,我们多半是一个学校的,为什么呢?因为这道题叫白银莲花池.. 题目 [问题描述] FJ建造了一个美丽的池塘,用于让奶牛们锻炼.这个长方形的池子被分割成了 M 行和 ...
- 故事公园-—昆明莲花池
每个公园都有自己的地理特征,奇风异俗,各存其韵.昆明莲花池公园则因几处遗址以及涉及的故事,让人们留连往返,奕奕不舍,他(她)们的故事让世人感叹! 这里的遗址其中有南明末代皇帝的墓地,陈圆圆的梳妆楼,现 ...
- 香港大屿山祈福线路攻略
大屿山(Lantau Island),位于香港西南面,总面积达146.75平方公里,是中国境内面积第六大岛屿.是香港境内最大的岛屿,也是万山群岛中面积最大岛,大屿山最有名的是坐落于大屿山宝莲寺的天坛大 ...
- 涨姿势!北京地铁原来是16条旅游专线
学姐按:周末想带孩子玩,又没太多时间.好不容易有时间出去了,结果半天都被堵在了路上,这让很多家长每逢周末必发愁.为什么不换种方式出行呢?北京的地铁的里程越来越长,殊不知所经之处有很多的大小景点可以玩. ...
- 待得天晴花已老,不如携手雨中看
东风未放晓泥干,红药花开不耐寒.待得天晴花已老,不如携手雨中看. <<雨中赏牡丹>> 唐·窦梁宾 认识她的时候,被她脸上无忧无虑的笑容深深打动.我觉得她就是那种看一辈子,仍 ...
- 更愿意思念更早的“金陵”
写过了长安城,总有些未舍之意.念一曲元人张可久的散曲,"阿房舞殿翻罗袖,金谷名园起玉楼,隋堤古柳缆龙舟.不堪回首,东风还又,野花开暮春时候.美人自刎乌江岸,战火曾烧赤壁山.将军空老玉门关.伤 ...
- NOIP模拟测试19
T1: 题目大意:将一颗有N个节点的树分割,使得每个联通块大小相等,问一共有多少方案.(N<=1000000) 首先,一条很显然的性质,每个联通块的大小一定是N的因子. 然后,我们可以对于每个因 ...
- Bittersweet——NOIP2018 游记
读者,也许你一向没有浏览网页戴耳机的习惯,但这一次的背景音乐列表,每一首都由 Capella 精心选择,乐曲长度与排列顺序也都经过认真安排.恳请你戴上耳机调至舒适的音量,伴着这作为游记一部分的 ...
- SpringBoot+Mybatis+Vue整合
创建springboot项目 添加分页依赖等 <?xml version="1.0" encoding="UTF-8"?> <project ...
最新文章
- 人群密度估计--Structured Inhomogeneous Density Map Learning for Crowd Counting
- HDU-1452 因子和 积性函数性质
- shell编程之特殊变量
- c/c++如何正确使用结构体?
- Enum枚举类|注解Annotation
- php软件开发--memcache缓存内存对象分布式系统
- mysql与win8有冲突吗_Win8系统Defender功能和安全软件冲突怎么办
- Excel-VBA操作文件四大方法之三(3/4)
- if __name__ == __main__如何正确理解
- docker 拷贝镜像文件
- labelImg安装小记
- 交互式电子杂志_快速的创建交互式演示和翻转电子书工具-XFlip Enterprise(电子杂志相册制作器) V2.0.5.0 中文版 - 未来软件园...
- mysql 建模工具 mac_MySQL Workbench for Mac 6.0 下载 - Mac上优秀的数据库建模工具 | 玩转苹果...
- lcd12864资料
- speex回声消除源码解读
- PROFINET转CAN网关监测CAN设备在线设置文档
- 报告显示,宝爸参与度不断提升,超三成男性提前服用营养品备孕
- bam文件读取_把bam文件读入R,并且转为grange对象
- 修复我的世界ice服务器的指令,我的世界 基岩版:服务器清理命令
- Java Swing 设置全局的字体