HDU 5433
每次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的更多相关文章
- HDU 5433 Xiao Ming climbing 动态规划
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5433 Xiao Ming climbing Time Limit: 2000/1000 MS (Ja ...
- HDU 5433 Xiao Ming climbing dp
Xiao Ming climbing Time Limit: 1 Sec Memory Limit: 256 MB 题目连接 http://bestcoder.hdu.edu.cn/contests/ ...
- HDU 5433 Xiao Ming climbing
题意:给一张地图,给出起点和终点,每移动一步消耗体力abs(h1 - h2) / k的体力,k为当前斗志,然后消耗1斗志,要求到终点时斗志大于0,最少消耗多少体力. 解法:bfs.可以直接bfs,用d ...
- HDu 5433 Xiao Ming climbing (BFS)
题意:小明因为受到大魔王的诅咒,被困到了一座荒无人烟的山上并无法脱离.这座山很奇怪: 这座山的底面是矩形的,而且矩形的每一小块都有一个特定的坐标(x,y)和一个高度H. 为了逃离这座山,小明必须找到大 ...
- 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 ...
- HDOJ 2111. Saving HDU 贪心 结构体排序
Saving HDU Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) Total ...
- 【HDU 3037】Saving Beans Lucas定理模板
http://acm.hdu.edu.cn/showproblem.php?pid=3037 Lucas定理模板. 现在才写,noip滚粗前兆QAQ #include<cstdio> #i ...
- hdu 4859 海岸线 Bestcoder Round 1
http://acm.hdu.edu.cn/showproblem.php?pid=4859 题目大意: 在一个矩形周围都是海,这个矩形中有陆地,深海和浅海.浅海是可以填成陆地的. 求最多有多少条方格 ...
- HDU 4569 Special equations(取模)
Special equations Time Limit:1000MS Memory Limit:32768KB 64bit IO Format:%I64d & %I64u S ...
随机推荐
- 慕课网6-2 作业:js实现轮播特效
小伙伴们,掌握了JavaScript的语法.流程控制语句.内置对象以及DOM和BOM的知识,运用所学知识完成如下图所示的交互效果——轮播图.效果图如下: 具体交互效果图参考gif动态效果图,gif效果 ...
- Java经典算法之选择排序(Select Sort)
思路:就是把所有数据项扫描一遍,挑出最小的那个和最左边的交换位置,即放到0位置.现在最左边的就是有序得了,不需要在交换位置,再次扫描数据时就是从1开始,还是寻找最小的和1交换位置,直到所有数据都是有序 ...
- 关于 android屏幕适配
一.关于布局适配 1.不要使用绝对布局 2.尽量使用match_parent 而不是fill_parent . 3.能够使用权重的地方尽量使用权重(android:layout_weight) 4.如 ...
- hbuilder中的 http://www.w3.org/TR/html4/loose.dtd
<!-- This is the HTML 4.01 Transitional DTD, which includes presentation attributes and elements ...
- SRM-697-DIV2
Div2 Medium: DivisibleSetDiv2 Problem Statement You are given a vector <int> b containing ...
- Caffe2:添加CUDA路径
在使用Eclipse时候,仍然出现 libcuda.so 找不到的情况..... 原因:cuda环境没有设置到系统环境中. 方案: 设置CUDA path: 在bashrc中添加路径,只对当前用户产生 ...
- 神经网络图灵机(Neural Turing Machines, NTM)
近期,Google Deep Mind团队提出了一个机器学习模型,并起了一个特别高大上的名字:神经网络图灵机,我为大家翻译了这篇文章,翻译得不是特别好,有些语句没读明白,欢迎大家批评指正 原论文出处 ...
- (转)分布式文件存储FastDFS(四)配置fastdfs-apache-module
http://blog.csdn.net/xingjiarong/article/details/50560605 在前边我们已经配置好了FastDFS的环境,但是此时的FastDFS还不能通过htt ...
- inflate(int resource, ViewGroup root, boolean attachToRoot)见解
/** * Inflate a new view hierarchy from the specified xml resource. Throws * {@link InflateException ...
- SSL协议提供的服务
SSL协议提供的服务主要有: 1)认证用户和服务器,确保数据发送到正确的客户机和服务器: 2)加密数据以防止数据中途被窃取: 3)维护数据的完整性,确保数据在传输过程中不被改变.