每次BC都好心酸。。。

BFS+queue。。状态可以设为p_val[x][y][k],加上斗志的值。

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>
#include <cmath>
#include <queue>
using namespace std; char str[55];
int h[55][55];
double p_val[55][55][55];
bool vis[55][55][55]; struct Point{
int x,y,k;double p;
Point(){}
Point(int xx,int yy,int kk,double pp){
x=xx,y=yy,p=pp;k=kk;
}
bool operator<(const Point &a)const{
if(p>a.p)return true;
else if(p==a.p){
if(k<a.k) return true;
}
return false;
}
}; int dir[4][2]={
{0,1},
{0,-1},
{1,0},
{-1,0}
}; int bx,by,ex,ey;
priority_queue<Point>que; void slove(int n,int m,int k,Point bt){
memset(vis,false,sizeof(vis));
Point tmp;
//priority_queue<Point>que;
que.push(bt);
bool flag=false;
while(!que.empty()){
bt=que.top();
que.pop();
if(vis[bt.x][bt.y][bt.k]) continue;
vis[bt.x][bt.y][bt.k]=true; // cout<<bt.p<<endl;
if(bt.p>p_val[bt.x][bt.y][bt.k]&&bt.k<=1) continue;
for(int i=0;i<4;i++){
tmp.x=dir[i][0]+bt.x;
tmp.y=dir[i][1]+bt.y;
if(tmp.x>=1&&tmp.x<=n&&tmp.y>=1&&tmp.y<=m&&h[tmp.x][tmp.y]!=-1){
tmp.p=bt.p+fabs(h[bt.x][bt.y]-h[tmp.x][tmp.y])/(bt.k*1.0);
tmp.k=bt.k-1;
// cout<<tmp.p<<endl;
if(tmp.p<p_val[tmp.x][tmp.y][tmp.k]&&abs(ex-tmp.x)+abs(ey-tmp.y)<tmp.k){
p_val[tmp.x][tmp.y][tmp.k]=tmp.p;
que.push(tmp);
}
}
}
}
double ans=1e10;
for(int i=1;i<=k;i++)
ans=min(ans,p_val[ex][ey][i]);
if(ans==1e10)
puts("No Answer");
else printf("%.2f\n",ans);
} int main(){
int T,n,m,k;
scanf("%d",&T);
while(T--){
while(!que.empty())que.pop();
scanf("%d%d%d",&n,&m,&k);
for(int i=1;i<=n;i++){
scanf("%s",str+1);
for(int j=1;j<=m;j++){
for(int s=0;s<=k;s++) p_val[i][j][s]=1e10;
if(str[j]=='#')
h[i][j]=-1;
else{
h[i][j]=str[j]-'0';
}
}
}
scanf("%d%d",&bx,&by);
scanf("%d%d",&ex,&ey);
if(abs(ex-bx)+abs(ey-by)>k||k==0){
puts("No Answer");
continue;
}
if(bx==ex&&by==ey){
puts("0.00");
}
else{
slove(n,m,k,Point(bx,by,k,0));
} }
return 0;
}

HDU 5433的更多相关文章

  1. HDU 5433 Xiao Ming climbing 动态规划

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5433 Xiao Ming climbing Time Limit: 2000/1000 MS (Ja ...

  2. HDU 5433 Xiao Ming climbing dp

    Xiao Ming climbing Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/ ...

  3. HDU 5433 Xiao Ming climbing

    题意:给一张地图,给出起点和终点,每移动一步消耗体力abs(h1 - h2) / k的体力,k为当前斗志,然后消耗1斗志,要求到终点时斗志大于0,最少消耗多少体力. 解法:bfs.可以直接bfs,用d ...

  4. HDu 5433 Xiao Ming climbing (BFS)

    题意:小明因为受到大魔王的诅咒,被困到了一座荒无人烟的山上并无法脱离.这座山很奇怪: 这座山的底面是矩形的,而且矩形的每一小块都有一个特定的坐标(x,y)和一个高度H. 为了逃离这座山,小明必须找到大 ...

  5. hdu 5433 Xiao Ming climbing(bfs+三维标记)

    Problem Description   Due to the curse made by the devil,Xiao Ming is stranded on a mountain and can ...

  6. HDOJ 2111. Saving HDU 贪心 结构体排序

    Saving HDU Time Limit: 3000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Total ...

  7. 【HDU 3037】Saving Beans Lucas定理模板

    http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...

  8. hdu 4859 海岸线 Bestcoder Round 1

    http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...

  9. HDU 4569 Special equations(取模)

    Special equations Time Limit:1000MS     Memory Limit:32768KB     64bit IO Format:%I64d & %I64u S ...

随机推荐

  1. Django day32 跨域问题,创建vue项目,axios的使用

    一:跨域问题 1.同源策略(浏览器的安全策略) 只允许当前页面朝当前域下发请求,如果向其他域发请求,请求可以正常发送,数据也可以拿回,但是被浏览器拦截了 2.cors:只要服务器实现了CORS,就可以 ...

  2. Idea使用Maven搭建SpringMVC的HelloSpringMvc并配置插件Maven和Jetty

    这篇博文只是纯粹的搭建一个SpringMVC的项目, 并不会涉及里面配置文件该写些什么. 只是纯粹的搭建一个初始的Hello SpringMVC的项目. 废话不多说,上图. 1.  打开IDEA 并且 ...

  3. NS2学习笔记(一)

    NS2有两种运行方式: 1.“脚本方式”,输入命令: ns tclscripl.tcl,其中 tclscripl.tcl 是一个Tcl脚本的文件名: 2“命令行方式”,输入命令:ns,进入NS2的命令 ...

  4. ORCLE 服务器下 in、instr、like的速度比较

    情景一(百万级数据):有一个表 (JG_COLLECT_FORM_QGZYXFPHFWJGJC1 ) 有数据条数 :1177472 条   结果:330542条 1.in: SELECT count( ...

  5. MySQL的安装和启动

    一.MySQL各类安装方法的比较 在Linux系统下,MySQL有3种主要的安装方式,分别是:RPM安装.二进制安装.源码安装.三种安装方式的优缺点如下表所示:   RPM安装 二进制安装 源码安装 ...

  6. Spring Boot (25) RabbitMQ消息队列

    MQ全程(Message Queue)又名消息队列,是一种异步通讯的中间件.可以理解为邮局,发送者将消息投递到邮局,然后邮局帮我们发送给具体的接收者,具体发送过程和时间与我们无关,常见的MQ又kafk ...

  7. [转]STL之vector容器详解

    vector 容器 vector是C++标准模版库(STL,Standard Template Library)中的部分内容.之所以认为是一个容器,是因为它能够像容器一样存放各种类型的对象,简单的说: ...

  8. CommandBehavior.CloseConnection使用

    其用在ExecuteReader(c)中,返回对象前不能关闭数据库连接,须用CommandBehavior.CloseConnection: 这是一个关于实际知识点的问题,面试官考查的是应聘者数据库访 ...

  9. Ajax——jq中ajax的使用

    格式化表单 <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  10. cmd 启动mysql环境变量配置

    win10系统:(其他系统类似,改环境变量就可以) 1.我的电脑,右键选择属性,进入系统页面 2.点击高级系统设置,进入系统属性页面 3.点击高级选项卡,点击环境变量,进入环境变量设置 4.选择系统变 ...