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 ...
随机推荐
- 一个跨域请求的XSS漏洞再续
上回提到,由于需要使用代理页面解决POST请求的跨域请求,需要在代理页面上执行传递的函数.所以我们做了白名单只有我们认可的回调函数才能在页面上执行,防止执行非法的JS方法,做脚本攻击. 我们所采用的方 ...
- maven java.lang.OutOfMemoryError:PermGEn space
配置环境变量: JAVA_OPTS-Xms512m -Xmx1024m -XX:PermSize=256m -XX:MaxPermSize=512m MAVEN_OPTS-Xms256m -Xmx ...
- Android播放音频的两种方式
一种使用MediaPlayer,使用这种方式通常是播放比较长的音频,如游戏中的背景音乐. 代码如下: private MediaPlayer mPlayer = null; mPlayer = Med ...
- Sublime Text3 Package Control和Emmet插件安装方法
因为初学前端,所以今天安装了Sumblime Text 3,然后就停不下来去找Package Control的安装方法. 网络上我找到并尝试过的方法有两种,我使用的是用Python代码去安装并成安装成 ...
- asp.net实现将网页存为mht格式文件,类似于网页另存为mht功能
MHT 首先说一下什么是mht格式文件,MHT叫“web单一文件”,就是把网页中包含的图片,CSS文件以及HTML文件全部放到一个MHT文件里面,而且浏览器可以直接读取显示.可以通过ie浏览器将一个网 ...
- WPF DataGrid 之数据绑定--实例2
1.前台Grid定义 <!--数据绑定--> <DataGrid Grid.Row="1" Name="gridOne" Margin=&qu ...
- Android应用中使用Popupmenu
最终效果: 页面布局: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns: ...
- DBHerperl类
using System; using System.Collections.Generic; using System.Text; using System.Data; using System.D ...
- js-浏览器DOM
1.window尺寸 适配所有浏览器的尺寸方案 var w=window.innerWidth|| document.documentElement.clientWidth|| document.bo ...
- jaxb xml to bean
package www.garbin.com.utils; import javax.xml.bind.JAXBContext; import javax.xml.bind.JAXBException ...