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

题意

题意:你在一个R*C网格的左上角,现在问你从左上角走到右下角需要的最少时间.其中网格中的任意两点的时间花费可以计算出来.

解题思路

这个需要发现一个规律,就是从左上角到其他任意一点,无论选择哪条路径,到达该点的速度都是固定的。

例如对于下面的一个矩阵:

1 5 3

6 3 5

2 4 3

可以发现我们想要计算数值为2的点的速度的话,\[v_2=v_1*2^{1-2}*\],路径是这样的\[1->6->2\], 然后\[v_2=v_1*2^{1-6}*2^{6-2}=v_1*2^{1-2}\]。这样我们就可以知道其他点的速度。

代码实现也是很奇特,这个是参考的大佬 \(lhm\) 同学代码,很厉害的同学,后来转了临床医学,还想和他组队打打比赛呢,不过也祝福他,能够找到自己喜欢的专业,毕竟自己也是转专业进的计算机专业,对于转专业自己也是有感受的。

代码实现

#include<iostream>
#include<cstdio>
#include<queue>
#include<cmath>
using namespace std;
struct node{int x,y;double time;bool operator < (const node& tmp) const{return time > tmp.time;}
};
double v;
int n,m;
int book[110][110],a[110][110];
priority_queue<node>q;
int next[4][2]={{0,1},{0,-1},{1,0},{-1,0}};
void bfs()
{while(!q.empty()) q.pop();q.push((node){1,1,0.0});while(!q.empty()){node t=q.top(); q.pop();if(book[t.x][t.y]==1) continue;book[t.x][t.y]=1;if(t.x==n&&t.y==m) {printf("%.2f\n",t.time);return ;}for(int i=0;i<4;i++){int tx=t.x+next[i][0];int ty=t.y+next[i][1];if(tx>=1&&tx<=n&&ty<=m&&ty>=1&&book[tx][ty]==0) {double tt=t.time+1.0/(pow(2.0,(a[1][1]-a[t.x][t.y]))*v);q.push((node){tx,ty,tt}); //注意这里加入的点没有进行标记}}}return ;
}
int main()
{while(scanf("%lf%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]);}bfs();  }return 0;
}

转载于:https://www.cnblogs.com/alking1001/p/11600511.html

Skiing POJ 3037 很奇怪的最短路问题相关推荐

  1. 发现一个很奇怪的现象,MyBaits 的 insert方法一直返回-2147482646

    点击关注公众号,Java干货及时送达来源:cnblogs.com/wyq178/p/8652443.html 前几天在做项目demo的时候,发现有一个很奇怪的现象: 就是MyBatis发现更新和插入返 ...

  2. QT中关于头文件一个很奇怪的问题

    最近在用QT Creator时候遇上一个很奇怪的问题,以往添加头文件使用#include<QStringListModel>这样的格式就可以,但是现在有时候却编译通不过,报了一大堆的错误, ...

  3. 一个很奇怪的 OpenCV出错:resize的坑

    简 介: 在cv2.resize中会存在很多"坑".但对象的数据格式不是"float"造成出错,给出的提示非常具有迷惑性.注意这一点会使得后面的编程更加的愉快. ...

  4. 女朋友天天气我怎么办_关于我的天气很奇怪

    女朋友天天气我怎么办 带有扭曲的天气应用 (A Weather App with a Twist) Is My Weather Weird?™ is a weather app with a twis ...

  5. LINQ是死是活?——很奇怪为什么会有这样的话题?

    LINQ是死是活??? 如果我问您:机器代码死了吗?汇编死了吗?C死了吗?VB6.0死了吗?Delphi死了吗?您可能会觉得我很无聊.所以我觉得"LINQ是死是活"的说法也很奇怪? ...

  6. php phar包require报错,php,_很奇怪,php 引入了phar,但是报错,说Predis\Client类找不到?,php - phpStudy...

    很奇怪,php 引入了phar,但是报错,说Predis\Client类找不到? require 'Predis.phar'; use Predis\Client; ini_set('session. ...

  7. oracle -12169,很奇怪的错误ORA-12169

    本帖最后由 happy_lhh 于 2015-5-19 17:17 编辑 数据库服务器为2个结点的RAC 在应用服务器上安装ORACLE客户端,配置tnsnames.ora如下: test_new = ...

  8. 现在人真的很奇怪,看见有钱人点头哈腰

    现在人真的很奇怪,看见有钱人点头哈腰,好话说尽,就差变成二哈了.看见穷人指指点点,横眉冷对,就差上前踹两脚了. 我就纳了闷了,对有钱人点头哈腰上赶着巴结,他是能给你吃呀还是能把钱分你一半? 对穷人指指 ...

  9. get请求400错误 vue_vue用get请求,一个很奇怪的现象

    页面长这样: 打印出来的是选中的id 点击"确定"后,我向后端发送一个get请求 this.$axios.get('/crossSchool',{ params:{ itemUid ...

  10. ubuntu的分辨率突然变得很奇怪或者ubuntu 上qq无法打开

    ubuntu的分辨率突然变得很奇怪或者ubuntu 上qq无法打开 解决方法 可能都是显卡的问题 qq无法打开可能是因为显卡频繁启动. 从新启动显卡,随便选择一个显卡,应用改变,然后重启设备.

最新文章

  1. rich-text 图片控制_武汉煤制工业级乙二醇图片
  2. C语言程序设计II—第八周教学
  3. (转载)深入理解Linux中内存管理---分段与分页简介
  4. python接口封装_Python 接口测试之接口关键字封装
  5. sketch如何做设计稿交互_sketch交互点击视觉标注方法|sketch如何实现交互点击的视觉标注 - PS下...
  6. COPRA RF 2005 SR1冷弯成型,轧辊设计 USB加密锁
  7. Java发送邮件,优美html邮件模板分享
  8. 如何制作一个蓄力跳的功能
  9. 魅族4usb计算机连接,魅族MX4如何连接电脑 魅族MX4连接电脑方法
  10. 用 Rust 写一个声控小动画
  11. 星星城堡童装加盟雾非雾
  12. ipip.net IP位置信誉信息爬取
  13. JAVA高级基础(26)---File的常用方法
  14. firefox 显示网页加载时间的插件
  15. More Effective C++ 阅读笔记 解释清晰
  16. C#设计模式(4)-Simple Factory Pattern
  17. 一汽妈妈叫你来看跌停
  18. 合肥工业大学机械(专硕)考研上岸经验分享
  19. Rosetta Stone的第一遍学习总结
  20. 主成分分析——PCA降维Python实现及碎石图

热门文章

  1. mysql5.5.8安装图解_MySQL 5.5.8安装详细步骤-阿里云开发者社区
  2. java后端路由中转
  3. 《轻松读懂spring》之 IOC的主干流程(上)
  4. Linux下安装NFS共享文件资源
  5. 怎么用最短时间高效而踏实地学习Linux?
  6. SSM-SpringMVC-15:SpringMVC中小论注解式开发之通配符篇
  7. 你确定你真的懂Nginx与PHP的交互?
  8. 自动化查询及增加配置参数功能
  9. 【项目经理之修炼(9)】《初级篇》谦虚也是可以修炼的
  10. [2018.07.14 T3] B君的第六题