每次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. 【知识总结】线性筛_杜教筛_Min25筛

    首先感谢又强又嘴又可爱脸还筋道的国家集训队(Upd: WC2019 进候选队,CTS2019 不幸 rk6 退队)神仙瓜 ( jumpmelon ) 给我讲解这三种筛法~~ 由于博主的鸽子属性,这篇博 ...

  2. 最新省市区划分码code

    爬取国家统计局省市区code 提供php爬取脚本以及json和sql https://github.com/zzDylan/area-code 觉得好用给个star,3q

  3. 快速搭建Hadoop及HBase分布式环境

    本文旨在快速搭建一套Hadoop及HBase的分布式环境,自己测试玩玩的话ok,如果真的要搭一套集群建议还是参考下ambari吧,目前正在摸索该项目中.下面先来看看怎么快速搭建一套分布式环境. 准备 ...

  4. P1418 选点问题

    题目描述 给出n个点,m条边,每个点能控制与其相连的所有的边,要求选出一些点,使得这些点能控制所有的边,并且点数最少.同时,任意一条边不能被两个点控制 输入输出格式 输入格式: 第一行给出两个正整数n ...

  5. 关于onActivityResult方法不执行的问题汇总

    我们不生产代码, 只是大自然的搬运工.  首先致谢: https://blog.csdn.net/sbvfhp/article/details/26858441 场景描述: 在A activity(由 ...

  6. mysql中的各种concat

    引用:http://www.cnblogs.com/appleat/archive/2012/09/03/2669033.html 一.CONCAT()函数CONCAT()函数用于将多个字符串连接成一 ...

  7. [Android]异常8-android.view.WindowManager$BadTokenException

    背景:Service服务中使用WindowManager时,Android4.4使用正常,Android6.0使用应用崩溃停止运行,提示android.view.WindowManager$BadTo ...

  8. html5——全屏显示

    基本概念 1.HTML5规范允许用户自定义网页上任一元素全屏显示 2.requestFullscreen() 开启全屏显示.cancleFullscreen() 关闭全屏显示 3.不同浏览器兼容性不一 ...

  9. JS——锚点的运用

    锚点的两种形式: 1.<a href="#a">点击到锚点</a> 2.window.location.hash = "#a"; 最后都 ...

  10. java攻城狮之路--复习xml&dom_pull编程续

    本章节我们要学习XML三种解析方式: 1.JAXP DOM 解析2.JAXP SAX 解析3.XML PULL 进行 STAX 解析 XML 技术主要企业应用1.存储和传输数据 2.作为框架的配置文件 ...