Skiing POJ 3037 很奇怪的最短路问题
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 很奇怪的最短路问题相关推荐
- 发现一个很奇怪的现象,MyBaits 的 insert方法一直返回-2147482646
点击关注公众号,Java干货及时送达来源:cnblogs.com/wyq178/p/8652443.html 前几天在做项目demo的时候,发现有一个很奇怪的现象: 就是MyBatis发现更新和插入返 ...
- QT中关于头文件一个很奇怪的问题
最近在用QT Creator时候遇上一个很奇怪的问题,以往添加头文件使用#include<QStringListModel>这样的格式就可以,但是现在有时候却编译通不过,报了一大堆的错误, ...
- 一个很奇怪的 OpenCV出错:resize的坑
简 介: 在cv2.resize中会存在很多"坑".但对象的数据格式不是"float"造成出错,给出的提示非常具有迷惑性.注意这一点会使得后面的编程更加的愉快. ...
- 女朋友天天气我怎么办_关于我的天气很奇怪
女朋友天天气我怎么办 带有扭曲的天气应用 (A Weather App with a Twist) Is My Weather Weird?™ is a weather app with a twis ...
- LINQ是死是活?——很奇怪为什么会有这样的话题?
LINQ是死是活??? 如果我问您:机器代码死了吗?汇编死了吗?C死了吗?VB6.0死了吗?Delphi死了吗?您可能会觉得我很无聊.所以我觉得"LINQ是死是活"的说法也很奇怪? ...
- php phar包require报错,php,_很奇怪,php 引入了phar,但是报错,说Predis\Client类找不到?,php - phpStudy...
很奇怪,php 引入了phar,但是报错,说Predis\Client类找不到? require 'Predis.phar'; use Predis\Client; ini_set('session. ...
- oracle -12169,很奇怪的错误ORA-12169
本帖最后由 happy_lhh 于 2015-5-19 17:17 编辑 数据库服务器为2个结点的RAC 在应用服务器上安装ORACLE客户端,配置tnsnames.ora如下: test_new = ...
- 现在人真的很奇怪,看见有钱人点头哈腰
现在人真的很奇怪,看见有钱人点头哈腰,好话说尽,就差变成二哈了.看见穷人指指点点,横眉冷对,就差上前踹两脚了. 我就纳了闷了,对有钱人点头哈腰上赶着巴结,他是能给你吃呀还是能把钱分你一半? 对穷人指指 ...
- get请求400错误 vue_vue用get请求,一个很奇怪的现象
页面长这样: 打印出来的是选中的id 点击"确定"后,我向后端发送一个get请求 this.$axios.get('/crossSchool',{ params:{ itemUid ...
- ubuntu的分辨率突然变得很奇怪或者ubuntu 上qq无法打开
ubuntu的分辨率突然变得很奇怪或者ubuntu 上qq无法打开 解决方法 可能都是显卡的问题 qq无法打开可能是因为显卡频繁启动. 从新启动显卡,随便选择一个显卡,应用改变,然后重启设备.
最新文章
- rich-text 图片控制_武汉煤制工业级乙二醇图片
- C语言程序设计II—第八周教学
- (转载)深入理解Linux中内存管理---分段与分页简介
- python接口封装_Python 接口测试之接口关键字封装
- sketch如何做设计稿交互_sketch交互点击视觉标注方法|sketch如何实现交互点击的视觉标注 - PS下...
- COPRA RF 2005 SR1冷弯成型,轧辊设计 USB加密锁
- Java发送邮件,优美html邮件模板分享
- 如何制作一个蓄力跳的功能
- 魅族4usb计算机连接,魅族MX4如何连接电脑 魅族MX4连接电脑方法
- 用 Rust 写一个声控小动画
- 星星城堡童装加盟雾非雾
- ipip.net IP位置信誉信息爬取
- JAVA高级基础(26)---File的常用方法
- firefox 显示网页加载时间的插件
- More Effective C++ 阅读笔记 解释清晰
- C#设计模式(4)-Simple Factory Pattern
- 一汽妈妈叫你来看跌停
- 合肥工业大学机械(专硕)考研上岸经验分享
- Rosetta Stone的第一遍学习总结
- 主成分分析——PCA降维Python实现及碎石图
热门文章
- mysql5.5.8安装图解_MySQL 5.5.8安装详细步骤-阿里云开发者社区
- java后端路由中转
- 《轻松读懂spring》之 IOC的主干流程(上)
- Linux下安装NFS共享文件资源
- 怎么用最短时间高效而踏实地学习Linux?
- SSM-SpringMVC-15:SpringMVC中小论注解式开发之通配符篇
- 你确定你真的懂Nginx与PHP的交互?
- 自动化查询及增加配置参数功能
- 【项目经理之修炼(9)】《初级篇》谦虚也是可以修炼的
- [2018.07.14 T3] B君的第六题