弗雷迪青蛙正坐在湖中的一块石头上。突然他注意到坐在另一块石头上的Fiona Frog。他计划去看望她,但由于水很脏,而且满是游客的防晒霜,他想避免游泳,而是跳着去接近她。不幸的是,菲奥娜的石头已经超出了他的跳跃范围。因此,弗雷迪考虑使用其他石头作为中间站,并通过几个小跳跃序列达到她。为了执行一个给定的跳跃序列,青蛙的跳跃范围显然必须至少和序列中最长的跳跃一样长。因此,两块石头之间的青蛙距离(人类也叫它minimax距离)被定义为两块石头之间所有可能路径的最小必要跳跃距离。你得到了弗莱迪的石头、菲奥娜的石头和湖里所有其他石头的坐标。你的工作是计算弗莱迪和菲奥娜的石块之间的青蛙距离。输入输入将包含一个或多个测试用例。每个测试用例的第一行将包含石头数n(2<=n<=200)。下一行n包含两个整数Xi,Yi(0<=Xi,Yi=1000),表示石头席席I的坐标。石头1是弗莱迪的石头,石头2是菲奥娜的石头,其他的N-2石头是空的。每个测试用例后面都有一个空行。对于n,输入以零(0)值终止。输出对于每个测试用例,打印一行“Scenario#x”和一行“Frog Distance=y”,其中x由测试用例编号替换(从1开始编号),y由适当的实数替换,打印为三位小数。在每个测试用例后面都放一个空行,即使在最后一个测试用例之后。
Sample Input
2
0 0
3 43
17 4
19 4
18 50
Sample Output
Scenario #1
Frog Distance = 5.000Scenario #2
Frog Distance = 1.414

思路:最短路变形,刚开始写的时候我一直不理解题意 然后一直错 看了很长时间才看出来它并不是单纯的使用最短路 他要求的是必要最小跳跃距离而不是最短路径。
代码:

#include<stdio.h>
#include<math.h>
#include<string.h>
#include<algorithm>
using namespace std;
double e[1010][1010],dis[1010];
int main()
{int i,j,n,v,kk=0,k;double x[1010],y[1010];while(~scanf("%d",&n)&&n!=0)//输入一个N也就是n块石头{memset(x,0,sizeof(x));memset(y,0,sizeof(y));memset(e,0,sizeof(e));
/*      for(i=1;i<=n;i++)//我们给每块石头都编一个号从1开始{for(j=1;j<=n;j++){if(i==j) e[i][j]=0;else{e[i][j]=99999999;}}}
*/for(i=1;i<=n;i++){scanf("%lf %lf",&x[i],&y[i]);} for(i=1;i<=n;i++)//计算出任意两块石头之间的距离存入e数组{for(j=1;j<=n;j++){e[i][j]=e[j][i]=1.0*sqrt(1.0*(x[i]-x[j])*(x[i]-x[j])+1.0*(y[i]-y[j])*(y[i]-y[j]));}}for(k=1;k<=n;k++){for(i=1;i<=n;i++){for(j=1;j<=n;j++)//注意这里不是求最短路径所以不需要if判断了{e[i][j]=min(e[i][j],max(e[k][j],e[i][k]));//max(e[k][j],e[i][k])这个的意思是从i到j需要转折其中大的那个距离就是最小必要距离  如果选取小的话 会出现从一块石头跳不到另一块。然后让他和直接从i到j比较}}}printf("Scenario #%d\n",++kk);printf("Frog Distance = %.3lf\n\n",e[1][2]);}return 0;
}

最短路 弗雷迪青蛙正坐在湖中的一块石头上。突然他注意到坐在另一块石头上的Fiona Frog。他计划去看望她,但由于水很脏,而且满是游客的防晒霜,他想避免游泳,而是跳着去接近她。相关推荐

  1. 王者荣耀微信哪个服务器人最少,王者荣耀:微信区王者人数锐减,大神们都去哪了?这些原因很真实...

    原标题:王者荣耀:微信区王者人数锐减,大神们都去哪了?这些原因很真实 王者荣耀:微信区王者人数锐减,大神们都去哪了?这些原因很真实 大家好!王者荣耀S16赛季已经开启一月之余,但是微信区的王者段位却相 ...

  2. 机器人 瓷砖墙面清洗_墙面瓷片很脏了,有什么办法清洗呀好烦哦...

    墙面瓷片很脏了,有什么办法清洗呀好烦哦... 去化工商店买些低浓度的盐酸,或者草酸.带上手套用抹布涂抹上五分钟后,用抹布擦洗,一次不彻底的话,可再次 涂刷,然后用清水清洗即可.清理污垢效果非常明显 2 ...

  3. um是代表什么意思_梦见厕所很脏全是屎是什么意思,好不好,代表什么

    梦见厕所是什么意思准备考试的人梦见厕所屎,意味着接近录取成绩,稍加努力有希望.谈婚论嫁的人梦见厕所屎,说明水火不相容,未能沟通互相了解,无缘份.创业的人梦见厕所屎,代表反覆不定,多阻碍,重新整顿再开业 ...

  4. 【组队学习】【31期】水很深的深度学习

    水很深的深度学习 航路开辟者:刘洋 领航员:陈宇 航海士:刘洋.陈陟原.左凯文.初晓宇.刘羽中 基本信息 开源内容:https://github.com/datawhalechina/unusual- ...

  5. 水很深,我还是下去了

    blog.51cto.仰慕很久,受惠很久,卧龙藏虎,水很深,我还是下去了....... 开博第一篇 转载于:https://blog.51cto.com/20100823/381858

  6. 水很深的深度学习-Task05循环神经网络RNN

    循环神经网络 Recurrent Neural Network 参考资料: Unusual-Deep-Learning 零基础入门深度学习(5) - 循环神经网络 史上最小白之RNN详解_Tink19 ...

  7. 水很深的深度学习(四)——卷积神经网络CNN

    参考资料: 1.水很深的深度学习-CNN 2.卷积神经网络超详细介绍_呆呆的猫的博客-CSDN博客_卷积神经网络 3.大话卷积神经网络CNN(干货满满)-CSDN博客 卷积神经网络的概念 计算机视觉和 ...

  8. 水很深的深度学习-Task03前馈神经网络

    本文参考 Datawhale:水很深的深度学习 深度学习(四)-前馈神经网络_未名湖畔的落叶-CSDN博客_前馈神经网络 神经元模型   在前馈神经网络中,各神经元分别属于不同的层.每一层的神经元可以 ...

  9. 水很深的深度学习|Task 01

    水很深的深度学习|Task 01 1.绪论与深度学习概述 说深度学习之前,先说下人工智能和机器学习吧 人工智能是利用数字计算机或者数字计算机控制的机器模拟.延伸 和扩展人的智能,感知环境.获取知识并使 ...

最新文章

  1. 【NOIP校内模拟】T2 华莱士(环套树)
  2. 编译工具 之 ant
  3. 【播放器SDK】Android如何实现固定竖屏播放视频
  4. 2097352GB地图数据,AI技术酷炫渲染,《微软飞行模拟器》游戏即将上线
  5. linux中时间戳与date的互转
  6. runtime的用法
  7. python错误解决方案之关于报urllib2.HTTPError: HTTP Error 401: Unauthorized错误问题
  8. 魔域几点服务器重置,服务器维护后第一轮BOSS时间以及每张地图的BOSS点!
  9. (三) shiro通过jdbc连接数据库
  10. 文献记录(part33)-Hierarchical deep neural network for mental stress state detection using IoT ...
  11. OpenCV学习(13) 细化算法(1)(转)
  12. python网络编程基础--http
  13. csv文件行数超过软件上限解决方案
  14. Unity3d接入googleplay内购详细说明(四)
  15. 详解torch.view()的-1参数是什么意思
  16. java做2048_java版实现2048游戏功能
  17. 四、Sails项目的Api文档——集成Swagger解决方案
  18. php监听input,js实时监听input中值变化
  19. 美团(2) - 实战准备
  20. UGC、元宇宙概念、与迷你世界玩法

热门文章

  1. Spring Boot官方翻译
  2. DLP数据丢失防护/数据防泄漏 隐私保护概念解析
  3. Camera-智能驾驶
  4. 在网页中控制PDF打印的方法
  5. 伙伴系统Linux概述
  6. 小程序图片不显示(在没有错误的情况下)
  7. 七牛云集成实时音视频云WebRTC
  8. 【渝粤题库】陕西师范大学292091公共管理学原理 作业(高起专)
  9. python shelve模块_python之shelve模块
  10. U盘可以当linux系统盘吗,怎样把Ubuntu Linux系统安装到u盘【步骤详解】