zoukankan      html  css  js  c++  java
  • SSL 1615——Frogger【数学】【最短路】

    Description

      有一只叫做Freddy的青蛙坐在湖中央的一块石头上,突然间他发现另一只青蛙(她的名字是Fiona)坐在另一颗石头上。他想要过去找她,但是因为湖水很脏,到处充满着游客的防晒油,所以他决定用跳的,而不要用游的。
    不妙的是Fiona的石头离他的距离超出他所能跳的范围。因此Freddy考虑利用其它的一些石头当作中继站,因此他就可以跳比较小的距离(或许要跳许多次)去找Fiona。要这样子连续的跳,很明显的Freddy一次能跳的距离必须至少和这一串石头间的距离最大的距离一样。因此,介于石头间的蛙跳距离(frog distance,人类也称之为minmax distance)定义为要从Freddy所在的石头要跳到Fiona所在的石头的路径中,最小必须要跳的距离。给你Freddy所在的石头、Fiona所在的石头,以及湖中所有其它石头的坐标,你的任务是算出介于Freddy和Fiona所在石头间的蛙跳距离。

    Input

    输入含有多组测试数据。每组测试资料的第一列有1个整数n,代表石头的数目(2 <= n <= 200)。接下来的n列每列有2个整数xi,yi(0 <= xi,yi <= 1000)代表第i颗石头的坐标。其中第一颗为Freddy所在的石头,第二颗为Fiona所在的石头,其它的n-2颗石头上则是空的。
    每组测试数据后有一空白列,当n=0时代表输入结束。请参考Sample Input。

    Output

    对每一组测试数据,输出一列这是第几组测试数据,以及一列蛙跳距离。
    每组测试数据后亦输出一空白列。请参考Sample Output。

    Sample Input

    2
    0 0
    3 4

    3
    17 4
    19 4
    18 5

    0
    Sample Output

    Scenario #1
    Frog Distance = 5.000

    Scenario #2
    Frog Distance = 1.414


    每一组数据,将每一块石头之间的距离求出来(公式:sqrt(sqr(x1-x2)+sqr(y1-y2))
    再用Floyd求最短路


    代码如下:

    var
      n,i,j,t,k,p:longint;
      a:array[1..200,1..200] of real;
      x,y,l:array[1..200] of longint;
      d:array[1..200] of real;
    begin
      readln(n);
      while n<>0 do
        begin
          inc(p);
          readln(x[1],y[1]);
          readln(x[n],y[n]);
          for i:=2 to n-1 do readln(x[i],y[i]);
          fillchar(a,sizeof(a),$7);
          for i:=1 to n do
            for j:=1 to n do
              a[i,j]:=sqrt(sqr(x[i]-x[j])+sqr(y[i]-y[j]));
          for k:=1 to n do
            for i:=1 to n do
              for j:=1 to n do
                if (a[i,j]>a[i,k])and(a[i,j]>a[k,j]) then
                  if a[i,k]>a[k,j] then a[i,j]:=a[i,k] else a[i,j]:=a[k,j];
          writeln('Scenario #',p);
          writeln('Frog Distance = ',a[1,n]:0:3);
          writeln;
          readln(n);
        end;
    end.
  • 相关阅读:
    解决 DBMS_AW_EXP: BIN$*****==$0 not AW$
    物化视图(materialized view) 实现数据迁移、数据定时同步
    Mysql exists 与 in
    ORACLE DATAGUARD 进程
    ORACLE DATAGUARD SWITCHOVER 步骤
    Oracle Dataguard failover 操作步骤
    Python 包管理(PYPA)
    Emacs Org-mode 4 超连接
    Emacs Org-mode 3 表格
    ycmd for emacs 代码自动补全
  • 原文地址:https://www.cnblogs.com/Comfortable/p/8412333.html
Copyright © 2011-2022 走看看