hdu5433 Xiao Ming climbing
Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/65536 K (Java/Others)
Total Submission(s): 438 Accepted Submission(s): 108
This mountain is pretty strange that its underside is a rectangle which size is n∗m and
every little part has a special coordinate(x,y)and
a height H.
In order to escape from this mountain,Ming needs to find out the devil and beat it to clean up the curse.
At the biginning Xiao Ming has a fighting will k,if
it turned to 0 Xiao
Ming won't be able to fight with the devil,that means failure.
Ming can go to next position(N,E,S,W)from
his current position that time every step,(abs(H1−H2))/k 's
physical power is spent,and then it cost 1 point
of will.
Because of the devil's strong,Ming has to find a way cost least physical power to defeat the devil.
Can you help Xiao Ming to calculate the least physical power he need to consume.
indicating the number of testcases.
Then T testcases
follow.
The first line contains three integers n,m,k ,meaning
as in the title(1≤n,m≤50,0≤k≤50).
Then the N × M matrix
follows.
In matrix , the integer H meaning
the height of (i,j),and
'#' meaning barrier (Xiao Ming can't come to this) .
Then follow two lines,meaning Xiao Ming's coordinate(x1,y1) and
the devil's coordinate(x2,y2),coordinates
is not a barrier.
otherwise.
(The result should be rounded to 2 decimal places)
4 4 5
2134
2#23
2#22
2221
1 1
3 3
4 4 7
2134
2#23
2#22
2221
1 1
3 3
4 4 50
2#34
2#23
2#22
2#21
1 1
3 3
0.00
No Answer
这题用宽搜做,用minx[x][y][d]表示走到(x,y)且剩余斗志为d的最少体力,bfs的过程中,只有满足边界条件并且下一步算出来的值要小于min[xx][yy][d]时才把这个点放入队列。
#include<iostream>
#include<stdio.h>
#include<stdlib.h>
#include<string.h>
#include<math.h>
#include<vector>
#include<map>
#include<set>
#include<queue>
#include<stack>
#include<string>
#include<algorithm>
using namespace std;
#define ll long long
#define inf 999999999
#define maxn 10050
char gra[55][55];
int vis[55][55];
int tab[10][2]={0,1,-1,0,0,-1,1,0};
int n,m,k,x3,x2,y3,y2;
struct node{
double tili;
int x,y,douzhi;
}q[1111111];
double minx[55][55][55];
void bfs()
{
int i,j,front,rear,x,y,xx,yy,douzhi,dou;
double tili,ti;
front=rear=1;
q[front].x=x3;q[front].y=y3;q[front].tili=0;q[front].douzhi=k;
while(front<=rear){
x=q[front].x;y=q[front].y;tili=q[front].tili;douzhi=q[front].douzhi;
front++;
//printf("%d %d %.2f %d\n",x,y,tili,douzhi);
if(x==x2 && y==y2){
continue;
}
for(i=0;i<4;i++){
xx=x+tab[i][0];yy=y+tab[i][1];
if(xx>=1 && xx<=n && yy>=1 && yy<=m && gra[xx][yy]!='#'){
ti=tili+fabs(gra[xx][yy]-gra[x][y])/(double)douzhi;
dou=douzhi-1;
if(dou==0 || ti>=minx[xx][yy][dou]){
continue;
}
minx[xx][yy][dou]=ti;
rear++;
q[rear].x=xx;q[rear].y=yy;q[rear].tili=ti;q[rear].douzhi=dou;
}
}
}
}
int main()
{
int i,j,T,h;
double ans;
scanf("%d",&T);
while(T--)
{
scanf("%d%d%d",&n,&m,&k);
for(i=1;i<=n;i++){
scanf("%s",gra[i]+1);
}
scanf("%d%d%d%d",&x3,&y3,&x2,&y2);
if(k==0){
printf("No Answer\n");continue;
}
if(x2==x3 && y2==y3){
printf("0.00\n");continue;
}
for(i=1;i<=n;i++){
for(j=1;j<=m;j++){
for(h=1;h<=k;h++){
minx[i][j][h]=inf;
}
}
}
minx[x3][y3][k]=0;
bfs();
ans=inf;
for(i=1;i<=k;i++){
if(ans>minx[x2][y2][i]){
ans=minx[x2][y2][i];
}
}
if(ans==inf){
printf("No Answer\n");
}
else printf("%.2f\n",ans);
}
return 0;
}
hdu5433 Xiao Ming climbing的更多相关文章
- 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 动态规划
题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5433 Xiao Ming climbing Time Limit: 2000/1000 MS (Ja ...
- 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 ...
- 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 4349 Xiao Ming's Hope lucas定理
Xiao Ming's Hope Time Limit:1000MS Memory Limit:32768KB Description Xiao Ming likes counting nu ...
- Hdu4349 Xiao Ming's Hope
Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- hdu 4349 Xiao Ming's Hope 规律
Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
- HDU 4349——Xiao Ming's Hope——————【Lucas定理】
Xiao Ming's Hope Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others) ...
随机推荐
- 一条查询SQl是怎样执行的
MySQL的逻辑架构图 大体来说,MySQL可以分为Server层和存储引擎层两部分. Server层包括连接器.查询缓存.分析器,优化器等,涵盖MySQL的大多核心服务功能,以及所有的内置函数,存储 ...
- Spark Streaming处理Flume数据练习
把Flume Source(netcat类型),从终端上不断给Flume Source发送消息,Flume把消息汇集到Sink(avro类型),由Sink把消息推送给Spark Streaming并处 ...
- 【ORA】 ORA-01031:权限不足的问题
今天创建一个用户,赋予dba权限,在plsql中选择sysdba登录,但是报错 ORA-01031 在网上找了好久最后的解决办法是 不仅仅要有dba权限 还要有这个权限: grant all priv ...
- pandas 写csv 操作
pandas 写csv 操作 def show_history(self): df = pd.DataFrame() df['Time'] = pd.Series(self.time_hist) df ...
- ctfhub技能树—信息泄露—备份文件下载—bak文件
打开靶机 查看页面信息 继续使用dirsearch进行扫描 python3 dirsearch.py -u http://challenge-d4234042e1d43e96.sandbox.ctfh ...
- firewalld原理和基础命令
firewalld防火墙 Firewalld是什么? Firewalld提供了支持网络.防火墙定义网络看见以及接口安全等级的动态防火墙管理工具
- 让 Mongoose 不再重复链接数据库(如何正确连接以解决升级后的报错)
升级了 Mongoose 后,发现项目打不开了.报错: MongooseError: You can not `mongoose.connect()` multiple times while con ...
- 使用gui_upload的总结
今天使用gui_upload函数将文本文件的内容读取到内表.出现了一个问题,总是程序宕掉,出项的提示是 Type conflict when calling a function module. 原来 ...
- ABAP-ALV-如何去掉OO方法中的ALV的标准按钮
SAP在做报表开发中,不同公司对报表的风格往往各异,为此经常在使用OO方法做ALV报表中需要去掉自带的工具栏而自行添加一些工具按钮,下面将简单介绍一些其实现过程与原理: 步骤一: DATA : gt_ ...
- Pytorch入门——手把手教你MNIST手写数字识别
MNIST手写数字识别教程 要开始带组内的小朋友了,特意出一个Pytorch教程来指导一下 [!] 这里是实战教程,默认读者已经学会了部分深度学习原理,若有不懂的地方可以先停下来查查资料 目录 MNI ...