每次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. 什么是JavaScript对象?

    对象是JavaScript的基本数据类型.对象是一种复合值:它将很多值(原始值或者其他对象)聚合在一起,可通过名字访问这些值.对象也可看做是属性的无序集合,每个属性都是一个名/值对.属性名是字符串,因 ...

  2. python中的深拷贝和浅拷贝(面试题二)

    一.浅拷贝 定义:浅拷贝只是对另外一个变量的内存地址的拷贝,这两个变量指向同一个内存地址的变量值. 浅拷贝的特点: 公用一个值: 这两个变量的内存地址一样: 对其中一个变量的值改变,另外一个变量的值也 ...

  3. Android Framework 学习

    1. 之前的研究太偏向应用层功能实现了,很多原理不了解没有深究,现在研究framework面存一些资料待有空查看. 2.Android系统的层次如下: 3.项目目录简单分析如下: 4.telphony ...

  4. MySQL的DML和DQL 增删改查

    DML和DQL   增删改查 SELECT * FROM grade --新增 insert -- 向年级表中新增3条数据INSERT INTO grade(gradeID,gradeName) VA ...

  5. C# linq学习【转】

    在说LINQ之前必须先说说几个重要的C#语言特性 一:与LINQ有关的语言特性 1.隐式类型 (1)源起 在隐式类型出现之前, 我们在声明一个变量的时候, 总是要为一个变量指定他的类型 甚至在fore ...

  6. 2 我们的C#学习方法

    在这里我们借鉴了一种行之有效的学习编程语言的方法,并在此基础上进行了相应的改良.我们在培训新人中使用后,发现这种学习方法是非常有效的. 你通过做以下几个步骤来一步步学习C#语言. 1. 搞懂每一个我们 ...

  7. java练习题-求int类型N值的阶乘

    //求int类型N值的阶乘 public static int getNumsJieCheng(int i){ int rs = 1; if(i==0||i==1){ return i; } if(i ...

  8. MAC 中安装和使用express

    其实window系统和mac的操作在大致上其实是想同的,只是一些细节的区别,以下对在mac下安装和使用express做简要介绍,如有不妥之处请各位大神指教. 一.首先要测试node和npm是否已经正确 ...

  9. CSS——规避脱标流和vertical-align

    规避脱标流: 1.尽量使用标准流. 2.标准流解决不了的使用浮动. 3.浮动解决不了的使用定位. 问题解决:嵌套盒子在不使用定位的情况下定位到右上角 <!DOCTYPE html> < ...

  10. Resetting the SMC & PRAM

    Resetting the SMC & PRAM on portables with a battery you should not remove on your own 1. Shut d ...