zoukankan      html  css  js  c++  java
  • 2016huasacm暑假集训训练三 B-Frogger

    题目链接: https://vjudge.net/contest/123674#problem/B

    题意:一只青蛙在湖中一颗石头上, 它想去有另一只青蛙的石头上,但是 湖里的水很脏,它不愿意游泳,所以它要跳过去;

    给出 两只青蛙所在石头的坐标, 及 湖里其他石头的坐标;任一两个坐标点间都是双向连通的。显然从A到B存在至少一条的通路,每一条通路的元素都是这条通路中前后两个点的距离,这些距离中又有一个最大距离。

    现在要求求出所有通路的最大距离,并把这些最大距离作比较,把最小的一个最大距离作为青蛙的最小跳远距离。

    只能说英语是硬伤,刚开始一直没看懂题目,最后还是一懂半懂,以为直接直接排序输出最大值就行,直接wa,后来还是用了floyd算法才Ac

     1 import java.io.BufferedInputStream;
     2 import java.util.Scanner;
     3 
     4 public class Main {
     5     static int n;
     6     static int cases = 0;
     7     static int stone[][];
     8     static double map[][];
     9     public static void main(String[] args) {
    10         Scanner s = new Scanner(new BufferedInputStream(System.in));
    11         while (s.hasNext()) {
    12             cases++;
    13             n = s.nextInt();
    14             if (n == 0) {
    15                 return;
    16             }
    17             stone = new int[n][2];
    18             map = new double[n][n];
    19             for (int i = 0; i < n; i++) {
    20                 stone[i][0] = s.nextInt();
    21                 stone[i][1] = s.nextInt();
    22             }
    23 
    24             for (int i = 0; i < n; i++) {     //i j 之间边的长度
    25                 for (int j = 0; j < n; j++) {
    26                     map[i][j] = Math.sqrt((stone[i][0] - stone[j][0]) * (stone[i][0] - stone[j][0])
    27                             + (stone[i][1] - stone[j][1]) * (stone[i][1] - stone[j][1]));
    28                 }
    29             }
    30 
    31             System.out.println("Scenario #" + cases);
    32 
    33             System.out.printf("Frog Distance = %.3f
    
    ", floyd());
    34         }
    35         s.close(); 
    36     }
    37     
    38 static double floyd() { 
    39         for (int i = 0; i < n; i++) {
    40             for (int k = 0; k < n; k++) {
    41                 for (int j = 0; j < n; j++) {
    42 
    43                     if (map[k][i] != 0 && map[i][j] != 0
    44                             && map[k][j] > (map[k][i] > map[i][j] ? map[k][i] : map[i][j])) {
    45                         map[k][j] = (map[k][i] > map[i][j] ? map[k][i] : map[i][j]);
    46                     }
    47                 }
    48             }
    49         }
    50         return map[0][1];
    51     }
    52 }
  • 相关阅读:
    豆瓣最佳影评-星级转换
    佛山链家-bs修改网页代码难题-待突破
    爬取学校官网新闻-bs与xpath的恩怨情仇
    猫眼电影评论(1366错误)-版本一
    books新手实践xpath
    scrapy项目入门--shell的使用!
    selenium模拟浏览器进行百度搜索
    在VM中安装CentOs后无法切换到root用户
    VMware安装Linux虚拟机(手动划分分区)(CentOS为例)详细图解
    JDBC连接数据库 mysql serverTimezone 时差问题
  • 原文地址:https://www.cnblogs.com/LIUWEI123/p/5715571.html
Copyright © 2011-2022 走看看