hdu 2757 Ocean Currents(优先队列+bfs)
小伙伴们真心被这道题惊呆了!刚开始是读题,题目都把小伙伴惊呆了,题目都读不懂!
在前面猴子小伙伴的帮助下,理解了一点点,又偷偷的在纸上写写画画,明白了题意!
后来,你懂的,果断拿下!在拿下的过程也经过一番厮杀,刚开始翻译惊现三十个错误,好吧,慢慢地找啊找,终于消灭所有错误,果断拿测试实例来测试,测试结果对的,果断提交上去,结果一个大大的Wrong Answer,又找啊,发现是自己的visit初始化问题,改了提交,终于出来了个Accepted;
题意:
这题首先给你一个表格,表格有0~7八种不同的数字,每种数字代表由该位置到一个特定的方向,由该位置到该位置上的数所指的方向的走一步,不消耗能量,如果不按该位置数所指的方向走,需消耗一个能量,题目要求求消耗最少的能量由起点到达终点,输出最少能量;
#include<stdio.h>
#include<string.h>
#include<queue>
using namespace std;
#define inf 99999999
struct node
{
int x,y,time;
friend bool operator<(node a,node b)
{
return a.time>b.time;
}
};
char map[1010][1010];
int visit[1010][1010];
int n,m;
int dir[8][2]={-1,0,-1,1,0,1,1,1,1,0,1,-1,0,-1,-1,-1};
int judge(int x,int y)
{
if(x>=1&&x<=n&&y>=1&&y<=m)
return 1;
return 0;
}
int bfs(int dx,int dy,int sx,int sy)
{
int j,a,b;
node i,o;
priority_queue<node>q;
i.x=dx;i.y=dy;
i.time=0;
q.push(i);
visit[dx][dy]=0;
while(!q.empty())
{
i=q.top();
q.pop();
a=i.x;
b=i.y;
if(a==sx&&b==sy)
return i.time;
for(j=0;j<8;j++)
{
o.x=dir[j][0]+i.x;
o.y=dir[j][1]+i.y;
if(!judge(o.x,o.y))
continue;
if(j==map[i.x][i.y]-'0')
o.time=i.time;
else
o.time=i.time+1;
if(visit[o.x][o.y]>o.time)
{
visit[o.x][o.y]=o.time;
q.push(o);
}
}
}
return 1;
}
int main()
{
int i,j,ans,t,dx,dy,sx,sy;
while(scanf("%d%d",&n,&m)!=EOF)
{
for(i=1;i<=n;i++)
scanf("%s",map[i]+1);
scanf("%d",&t);
while(t--)
{
for(i=1;i<=n;i++)
for(j=1;j<=m;j++)
visit[i][j]=inf;
scanf("%d%d%d%d",&dx,&dy,&sx,&sy);
ans=bfs(dx,dy,sx,sy);
printf("%d\n",ans);
}
}
return 0;
}
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2757
hdu 2757 Ocean Currents(优先队列+bfs)的更多相关文章
- UVA 11573 - Ocean Currents(BFS+优先队列)
UVA 11573 - Ocean Currents 题目链接 题意:给定一个海面.数字分别代表海流方向,顺着海流不用费能量,逆海流要费1点能量,每次询问给一个起点一个终点,问起点到终点耗费的最小能量 ...
- hdu - 1242 Rescue && hdu - 2425 Hiking Trip (优先队列+bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1242 感觉题目没有表述清楚,angel的朋友应该不一定只有一个,那么正解就是a去搜索r,再用普通的bfs就能过了 ...
- 【HDOJ】2757 Ocean Currents
简单BFS. /* 2757 */ #include <iostream> #include <queue> #include <cstdio> #include ...
- hdu 1026 Ignatius and the Princess I【优先队列+BFS】
链接: http://acm.hdu.edu.cn/showproblem.php?pid=1026 http://acm.hust.edu.cn/vjudge/contest/view.action ...
- HDU 2717 Catch That Cow --- BFS
HDU 2717 题目大意:在x坐标上,农夫在n,牛在k.农夫每次可以移动到n-1, n+1, n*2的点.求最少到达k的步数. 思路:从起点开始,分别按x-1,x+1,2*x三个方向进行BFS,最先 ...
- ZOJ 649 Rescue(优先队列+bfs)
Rescue Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others) Total Sub ...
- 【POJ3635】Full Tank 优先队列BFS
普通BFS:每个状态只访问一次,第一次入队时即为该状态对应的最优解. 优先队列BFS:每个状态可能被更新多次,入队多次,但是只会扩展一次,每次出队时即为改状态对应的最优解. 且对于优先队列BFS来说, ...
- Codeforces 677D - Vanya and Treasure - [DP+优先队列BFS]
题目链接:http://codeforces.com/problemset/problem/677/D 题意: 有 $n \times m$ 的网格,每个网格上有一个棋子,棋子种类为 $t[i][j] ...
- POJ 2449 - Remmarguts' Date - [第k短路模板题][优先队列BFS]
题目链接:http://poj.org/problem?id=2449 Time Limit: 4000MS Memory Limit: 65536K Description "Good m ...
随机推荐
- 在VC6中基于dll开发插件用于各种图片显示(BMP/TGA/JPG/GIF/PNG/TIF/ICO/WMF/EMF/...)
一.图片显示 图片显示的方法: 1. 直接写程序 2. 第3方库 3. 调用COM组件的IPicture接口 4. 使用MFC的CPictureHolder类 5. 使用GDI+的CImag ...
- HDU 3466 Proud Merchants
题目大意:现在给出商品,有三个参数,记为pi,qi,vi,vi是商品的在你心里价值,pi是商品的价格,qi是你要买商品的时候至少需要的钱然后求可得的最大价值. 单词积累:Merchants 商人 t ...
- Android的重力传感器(3轴加速度传感器)简单实例
重力感应主要是依靠手机的加速度传感器(accelerometer)来实现 在Android的开发中一共有八种传感器但是不一定每一款真机都支持这些传感器.因为很多功能用户根本不care的所以可能开发商会 ...
- Objective-c中@interface、@implementation、@protocal
以下 void print(); }; class AC{ }; 这时候,AI和AC是独立存在,AC不会因为没有和AI建立关系而编译错误,将AC做以下修改后,AI才和AC建立了关系,AC必须实现AI中 ...
- Sql server 事务 存储过程
事务( Transaction )是并发控制的单位,是用户定义的一个操作序列.这些操作要么都做,要么都不做,是一个不可分割的工作单位. 通过事务,SQL Server能将逻辑相关的一组操作绑定在一起, ...
- c#与.NET的区别
C#与.NET的关系 C# 可以通过.NET平台来编写 部署 运行.NET应用程序VB.NET.......NET语言 C#是专门为.NET平台而生的(面向对象) .NET平台的重要组成:1.FCL- ...
- html 5 废弃的标签和属性
第一类:表现性元素 basefont big center font s strike tt u 建议用语义正确的元素代替他们,并使用CSS来确保渲染后的效果 第二类:框架类元素 因框架有很多可用性及 ...
- NGUI 按钮音效问题
昨天给NGUI的按钮添加音效时,刚开始是自己新建空对象绑定声音的,后来发现NGUI按钮携带button sound组件,直接将音效拖入即可,不用写一行代码,非常简单.但是后来发现添加相同的音效有的按钮 ...
- Centon6.5虚拟机桥接设置
参考资料:http://blog.csdn.net/iamfafa/article/details/6209009 安装虚拟机的时候 就直接选择桥接,可以直接 使用 查看此状态下的配置如下 : 虚拟环 ...
- cmake 学习笔记(三)
转自:http://blog.csdn.net/dbzhang800/article/details/6329314 接前面的 Cmake学习笔记(一) 与 Cmake学习笔记(二) 继续学习 cma ...