Hdu2425-Hiking Trip(优先队列搜索)
#include<cstdio> #include<cstring> #include<string> #include<iostream> #include<sstream> #include<algorithm> #include<utility> #include<vector> #include<set> #include<map> #include<queue> #include<cmath> #include<iterator> #include<stack> using namespace std; const int INF=1e9+; const double eps=1e-; const int maxn=; int row,col,bex,bey,endx,endy; int P,S,T; int dx[]={-,,,},dy[]={,-,,}; //方向数组 char maze[maxn][maxn]; //地图 bool vis[maxn][maxn]; //标记数组 bool in(int x,int y){ return x>=&&x<row&y>=&&y<col; }//是否在界内 struct node { int x,y,d; node(int x=,int y=,int d=):x(x),y(y),d(d){} bool operator < (const node& t) const { return d>t.d; //越小的优先级越高 } }; priority_queue<node> que; int solve() { memset(vis,false,sizeof(vis)); while(!que.empty()) que.pop(); que.push(node(bex,bey,)); vis[bex][bey]=true; while(!que.empty()) { node t=que.top(); que.pop(); int x=t.x,y=t.y,d=t.d; if(x==endx&&y==endy) return d; for(int i=;i<;i++) { int nx=x+dx[i]; int ny=y+dy[i]; if(!in(nx,ny)||maze[nx][ny]=='@'||vis[nx][ny]) continue; //越界或是石头或已经被标记过 vis[nx][ny]=true; //标记 int nd=d; if(maze[nx][ny]=='T') nd+=T; else if(maze[nx][ny]=='.') nd+=S; else if(maze[nx][ny]=='#') nd+=P; que.push(node(nx,ny,nd)); //丢到优先队列里去 } } return -; } int main() { int Case=; while(scanf("%d%d",&row,&col)!=EOF) { scanf("%d%d%d",&P,&S,&T); for(int i=;i<row;i++) scanf("%s",maze[i]); scanf("%d%d%d%d",&bex,&bey,&endx,&endy); int ans=solve(); printf("Case %d: %d\n",++Case,ans); } return ; }
Hdu2425-Hiking Trip(优先队列搜索)的更多相关文章
- hdu - 1242 Rescue && hdu - 2425 Hiking Trip (优先队列+bfs)
http://acm.hdu.edu.cn/showproblem.php?pid=1242 感觉题目没有表述清楚,angel的朋友应该不一定只有一个,那么正解就是a去搜索r,再用普通的bfs就能过了 ...
- hdu 2425 Hiking Trip (bfs+优先队列)
Problem Description Hiking in the mountains is seldom an easy task for most people, as it is extreme ...
- hdu 2425 Hiking Trip
题目连接 http://acm.hdu.edu.cn/showproblem.php?pid=2425 Hiking Trip Description Hiking in the mountains ...
- HDU2425:Hiking Trip(BFS+优先队列)
给出一个地图,地图有四种路面,经过每种路面花费的时间不同,问从起点到终点所花费的最少时间是多少 把到各个点的花费存入队列中,然后弹出,即可得到最小 Sample Input 4 6 1 2 10 T. ...
- HDU2425:Hiking Trip(简单bfs,优先队列实现)
题目: 传送门 题意很简单就不解释了,水题一道. #include <iostream> #include <string.h> #include <stdio.h> ...
- HDU 1896 Stones --优先队列+搜索
一直向前搜..做法有点像模拟.但是要用到出队入队,有点像搜索. 代码: #include <iostream> #include <cstdio> #include <c ...
- HDU 5360 Hiking(优先队列)
Hiking Time Limit: 6000/3000 MS (Java/Others) Memory Limit: 131072/131072 K (Java/Others) Total S ...
- 【HDOJ】2425 Hiking Trip
优先级队列+BFS. #include <iostream> #include <cstdio> #include <cstring> #include <q ...
- 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 ...
随机推荐
- 转:TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码
TestLink1.9.3测试用例:Excel转换XML工具<二>实现代码 http://blog.csdn.net/candle806/article/details/7490599 以 ...
- DirectX Sample-Blobs实现原理
这个例子的实现主要包括两步: 1.计算三维采样坐标和color,实现代码是for( i = 0; i < NUM_Blobs; ++i )那个循环,计算完成以后g_pTexGBuffer[0]保 ...
- 为人们服务的asp.net 验证控件
ASP.NET是微软推出的WEB开发工具,他有很强大的功能,今天看视频讲到验证控件这一部分,真的感受到了微软全心全意为人民服务了.越来越佩服微软了,人家都设计出来了,咱们一定要会用才可以啊,不然太…. ...
- BNU10806:请在此处签到
每年圣诞,ZUN都会邀请很多人到幻想乡举行联欢,今年也不例外.在联欢前,所有人需要在自己的昵称旁签到(签全名),以示出席.然后ZUN 会把大家的签到表保存下来作为纪念,以激励来年努力工作. 昵称: ...
- Android动态加载jar/dex
前言 在目前的软硬件环境下,Native App与Web App在用户体验上有着明显的优势,但在实际项目中有些会因为业务的频繁变更而频繁的升级客户端,造成较差的用户体验,而这也恰恰是Web App的优 ...
- [CSAPP笔记][第六章存储器层次结构]
第六章 存储器层次结构 在简单模型中,存储器系统是一个线性的字节数组,CPU能够在一个常数访问每个存储器位置. 虽然是一个行之有效的模型,但没有反应现代系统实际工作方式. 实际上,存储器系统(memo ...
- 一个简单的ajax对象
function ajax(options) { //请求参数 options = { //类型 type: options.type || "Post", //地址 url: o ...
- javascript-Blob文件对象
一个Blob对象就是一个包含有只读原始数据的类文件对象.Blob对象中的数据并不一定得是JavaScript中的原生形式.File接口基于Blob,继承了Blob的功能,并且扩展支持了用户计算机上的本 ...
- MySQL 数据库入门操作
启动mysqld:在命令行启动mysql时,如不加"--console",启动.关闭信息不在界面中显示,而是记录在安装目录下的data目录里,文件名一般是hostname.err, ...
- linuxmit下git安装和初级使用
一.安装 sudo apt-get install git 二.配置 git config --global user.name "Your Name" git config -- ...