Skiing
Time Limit: 1000MS   Memory Limit: 65536K
Total Submissions: 4668   Accepted: 1242   Special Judge

Description

Bessie and the rest of Farmer John's cows are taking a trip this winter to go skiing. One day Bessie finds herself at the top left corner of an R (1 <= R <= 100) by C (1 <= C <= 100) grid of elevations E (-25 <= E <= 25). In order to join FJ and the other cows
at a discow party, she must get down to the bottom right corner as quickly as she can by travelling only north, south, east, and west. 



Bessie starts out travelling at a initial speed V (1 <= V <= 1,000,000). She has discovered a remarkable relationship between her speed and her elevation change. When Bessie moves from a location of height A to an adjacent location of eight B, her speed is
multiplied by the number 2^(A-B). The time it takes Bessie to travel from a location to an adjacent location is the reciprocal of her speed when she is at the first location. 



Find the both smallest amount of time it will take Bessie to join her cow friends. 

Input

* Line 1: Three space-separated integers: V, R, and C, which respectively represent Bessie's initial velocity and the number of rows and columns in the grid. 



* Lines 2..R+1: C integers representing the elevation E of the corresponding location on the grid.

Output

A single number value, printed to two exactly decimal places: the minimum amount of time that Bessie can take to reach the bottom right corner of the grid.

Sample Input

1 3 3
1 5 3
6 3 5
2 4 3

Sample Output

29.00

Dijkstra

用优先队列,否则可能会超时。还是比较直白的

#include <iostream>
#include <string.h>
#include <stdlib.h>
#include <algorithm>
#include <math.h>
#include <stdio.h>
#include <queue> using namespace std;
#define MAX 9000000000
struct Node
{
int x,y;
double time;
double v;
Node (){};
Node (int x,int y,double time,double v)
{
this->x=x;
this->y=y;
this->time=time;
this->v=v;
}
friend bool operator <(Node a,Node b)
{
if(a.time==b.time)
return a.v<b.v;
return a.time>b.time;
}
};
int dir[4][2]={{1,0},{-1,0},{0,1},{0,-1}};
int n,m;
int v;
int vis[105][105];
int a[105][105];
double s[105][105];
void Dijsktra()
{
priority_queue<Node> q;
q.push(Node(1,1,0,v));
while(!q.empty())
{
Node term=q.top();
q.pop();
if(vis[term.x][term.y]) continue;
vis[term.x][term.y]=1;
for(int i=0;i<4;i++)
{
int xx=term.x+dir[i][0];
int yy=term.y+dir[i][1];
if(xx<1||xx>n||yy<1||yy>m) continue;
if(vis[xx][yy]) continue;
if(s[xx][yy]>term.time+1.0/term.v)
{
s[xx][yy]=term.time+1.0/term.v;
q.push(Node(xx,yy,s[xx][yy],term.v*pow(2.0,a[term.x][term.y]-a[xx][yy]))); }
}
}
}
int main()
{
while(scanf("%d%d%d",&v,&n,&m)!=EOF)
{
for(int i=1;i<=n;i++)
for(int j=1;j<=m;j++)
{scanf("%d",&a[i][j]);s[i][j]=MAX;}
memset(vis,0,sizeof(vis));
s[1][1]=0;
Dijsktra();
printf("%.2f\n",s[n][m]);
}
return 0;
}

POJ 3037 Skiing(Dijkstra)的更多相关文章

  1. POJ 3037 Skiing(如何使用SPFA求解二维最短路问题)

    题目链接: https://cn.vjudge.net/problem/POJ-3037 Bessie and the rest of Farmer John's cows are taking a ...

  2. POJ - 3037 Skiing SPFA

    Skiing Bessie and the rest of Farmer John's cows are taking a trip this winter to go skiing. One day ...

  3. POJ 3037 Skiing

    Skiing Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 4810   Accepted: 1287   Special ...

  4. Skiing POJ 3037 很奇怪的最短路问题

    Skiing POJ 3037 很奇怪的最短路问题 题意 题意:你在一个R*C网格的左上角,现在问你从左上角走到右下角需要的最少时间.其中网格中的任意两点的时间花费可以计算出来. 解题思路 这个需要发 ...

  5. POJ 2502 - Subway Dijkstra堆优化试水

    做这道题的动机就是想练习一下堆的应用,顺便补一下好久没看的图论算法. Dijkstra算法概述 //从0出发的单源最短路 dis[][] = {INF} ReadMap(dis); for i = 0 ...

  6. poj 1556 (Dijkstra + Geometry 线段相交)

    链接:http://poj.org/problem?id=1556 The Doors Time Limit: 1000MS   Memory Limit: 10000K Total Submissi ...

  7. POJ 2502 Subway (Dijkstra 最短+建设规划)

    Subway Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 6689   Accepted: 2176 Descriptio ...

  8. poj 3159 Candies dijkstra + queue

    题目链接: http://poj.org/searchproblem 题目大意: 飞天鼠是班长,一天班主任买了一大包糖果,要飞天鼠分发给大家,班里面有n个人,但是学生A认为学生B比自己多的糖果数目不应 ...

  9. poj 2253 Frogger dijkstra算法实现

    点击打开链接 Frogger Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 21653   Accepted: 7042 D ...

随机推荐

  1. 微信小程序 异步请求拿数据+使用外部js库

    信小程序(与js)通过requirejs引用外部js文件 var modelSearch = require('../../utils/modelSearch.js') 这是一个构建数据请求筛选条件的 ...

  2. Android数据格式解析对象JSON用法

    1.JSON概念: 一种轻量级的数据交换格式,具有良好的可读和便于快速编写的特性,从而可以在不同平台间进行数据交换.JSON采用兼容性很高的文本格式,同时也具备类似于C语言体系的行为. JSON可以将 ...

  3. 点滴积累【JS】---JS小功能(checkbox实现全选和全取消)

    效果: 代码: <head runat="server"> <title></title> <script type="text ...

  4. [svc][op]网站504无法访问问题处理

    504 Gateway Time-out 网站出现了这种情况 架构是:tomcat+nginx, 想通过domain.com 跳转到www.domain.com. 客户端访问流程 客户端--dns-- ...

  5. jQuery - 获得内容和属性

    jQuery 拥有可操作 HTML 元素和属性的强大方法. jQuery DOM 操作 jQuery 中非常重要的部分,就是操作 DOM 的能力. jQuery 提供一系列与 DOM 相关的方法,这使 ...

  6. 初识PowerShell

    一.简介 Windows PowerShell 是微软公司为Windows环境所开发的壳程序(shell)及脚本语言技术,采用的是命令行界面.这项全新的技术提供了丰富的控制与自动化的系统管理能力.之前 ...

  7. phoneGap 3.5 eclipise 模拟器调试

    最近想搞phoneGap开发,可是一看 http://www.phonegapcn.com/ phoneGap中文网 FUCK .phoneGap 还在1.0.0 里混呢.现在phoneGap 3.5 ...

  8. quick-cocos2d-x 创建自定义lua绑定c++类

    内容主要参考 “在quick-cocos2d-x中添加自定义的类给lua使用” ( http://www.codeo4.cn/archives/746) 1. quick-coco2d-x 使用 to ...

  9. Linux高频指令总结

    作为一个计算机专业的科班,不会玩Linux怎么能行呢?玩Linux用可视化界面显得太low了,为了效(zhuang)率(bi),当然要用什么都用指令啊,可是指令太多了啊,现在就把平时遇到的高频的指令做 ...

  10. HLJU 1042 Fight (种类并查集)

    1042: Fight Time Limit: 1 Sec  Memory Limit: 128 MB Submit: 26  Solved: 8 [Submit][Status][pid=1042& ...