POJ2253——Frogger
来源:互联网 发布:java反斜杠替换 编辑:程序博客网 时间:2024/05/29 12:32
Description
Freddy Frog is sitting on a stone in the middle of a lake. Suddenly he notices Fiona Frog who is sitting on another stone. He plans to visit her, but since the water is dirty and full of tourists' sunscreen, he wants to avoid swimming and instead reach her by jumping.
Unfortunately Fiona's stone is out of his jump range. Therefore Freddy considers to use other stones as intermediate stops and reach her by a sequence of several small jumps.
To execute a given sequence of jumps, a frog's jump range obviously must be at least as long as the longest jump occuring in the sequence.
The frog distance (humans also call it minimax distance) between two stones therefore is defined as the minimum necessary jump range over all possible paths between the two stones.
You are given the coordinates of Freddy's stone, Fiona's stone and all other stones in the lake. Your job is to compute the frog distance between Freddy's and Fiona's stone.
Unfortunately Fiona's stone is out of his jump range. Therefore Freddy considers to use other stones as intermediate stops and reach her by a sequence of several small jumps.
To execute a given sequence of jumps, a frog's jump range obviously must be at least as long as the longest jump occuring in the sequence.
The frog distance (humans also call it minimax distance) between two stones therefore is defined as the minimum necessary jump range over all possible paths between the two stones.
You are given the coordinates of Freddy's stone, Fiona's stone and all other stones in the lake. Your job is to compute the frog distance between Freddy's and Fiona's stone.
Input
The input will contain one or more test cases. The first line of each test case will contain the number of stones n (2<=n<=200). The next n lines each contain two integers xi,yi (0 <= xi,yi <= 1000) representing the coordinates of stone #i. Stone #1 is Freddy's stone, stone #2 is Fiona's stone, the other n-2 stones are unoccupied. There's a blank line following each test case. Input is terminated by a value of zero (0) for n.
Output
For each test case, print a line saying "Scenario #x" and a line saying "Frog Distance = y" where x is replaced by the test case number (they are numbered from 1) and y is replaced by the appropriate real number, printed to three decimals. Put a blank line after each test case, even after the last one.
Sample Input
20 03 4317 419 418 50
Sample Output
Scenario #1Frog Distance = 5.000Scenario #2Frog Distance = 1.414
Source
Ulm Local 1997
题目的意思就是说,1-2的有很多条通路,而每一条通路都有个最大的路径,求所有通路里最大路径的最小值。
仔细想了下,其实可以用floyd的松弛思想来做,只不过方程的意思就改变了,我们不是求最短路,而是求i-j里要的那个最小值,灵光一现就想到了如下的方程
dp[i][j]=min(dp[i][j],max(dp[i][k],dp[k][j]);
题目的意思就是说,1-2的有很多条通路,而每一条通路都有个最大的路径,求所有通路里最大路径的最小值。
仔细想了下,其实可以用floyd的松弛思想来做,只不过方程的意思就改变了,我们不是求最短路,而是求i-j里要的那个最小值,灵光一现就想到了如下的方程
dp[i][j]=min(dp[i][j],max(dp[i][k],dp[k][j]);
#include<stdio.h>#include<string.h>#include<math.h>#include<iostream>#include<algorithm>using namespace std;double dp[220][220];struct node{int x,y;}point[220];double dis(node a,node b){return sqrt((double)((a.x-b.x)*(a.x-b.x)+(a.y-b.y)*(a.y-b.y)));}int main(){int n,icase=1;while(~scanf("%d",&n) && n){for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dp[i][j]=0x3f3f3f;for(int i=1;i<=n;i++)scanf("%d%d",&point[i].x,&point[i].y);for(int i=1;i<=n;i++) for(int j=1;j<i;j++) dp[i][j]=dp[j][i]=dis(point[i],point[j]);for(int k=1;k<=n;k++) for(int i=1;i<=n;i++) for(int j=1;j<=n;j++) dp[i][j]=min(dp[i][j],max(dp[i][k],dp[k][j])); printf("Scenario #%d\n",icase++); printf("Frog Distance = %.3f\n",dp[1][2]); printf("\n");}return 0;}
0 0
- POJ2253——Frogger
- poj2253—Frogger (并查集最短路)
- poj2253——Frogger(最小生成树,prim算法)
- POJ2253:Frogger
- poj2253 - Frogger
- POJ2253 Frogger
- POJ2253 Frogger
- poj2253 Frogger
- poj2253 Frogger
- poj2253 Frogger
- poj2253--Frogger
- POJ2253 - Frogger
- POJ2253 Frogger
- POJ2253 Frogger
- POJ2253-Frogger
- POJ2253 Frogger
- poj2253 Frogger
- poj2253 Frogger
- NOJ——[1378] 战斗吧!皇后们!
- NOJ——[1176] Exchange Rate
- Android测试工具小结
- POJ1511——Invitation Cards
- BZOJ 1650: [Usaco2006 Dec]River Hopscotch 跳石子
- POJ2253——Frogger
- NOJ——[1579] 小青蛙找妈妈
- 剑指offer-29:数组中出现次数超过一半的数字
- leetcode zigzag conversion
- zoj 1453 Surround the Trees (求凸包的周长)
- 如何确保你的远程员工有效地开展工作
- Embarcadero RAD Studio XE6 编译器可能是最大的编译器。
- javaScript学习日志 2014-8-5
- 一步一步教会你JAVA中调用C++