zoukankan      html  css  js  c++  java
  • [PAT] 1046 Shortest Distance (20 分)Java

    The task is really simple: given N exits on a highway which forms a simple cycle, you are supposed to tell the shortest distance between any pair of exits.

    Input Specification:

    Each input file contains one test case. For each case, the first line contains an integer N (in [3,105​​]), followed by N integer distances D1​​ D2​​ DN​​, where Di​​ is the distance between the i-th and the (i+1)-st exits, and DN​​ is between the N-th and the 1st exits. All the numbers in a line are separated by a space. The second line gives a positive integer M (104​​), with M lines follow, each contains a pair of exit numbers, provided that the exits are numbered from 1 to N. It is guaranteed that the total round trip distance is no more than 107​​.

    Output Specification:

    For each test case, print your results in M lines, each contains the shortest distance between the corresponding given pair of exits.

    Sample Input:

    5 1 2 4 14 9
    3
    1 3
    2 5
    4 1
    

    Sample Output:

    3
    10
    7


     1 package pattest;
     2 
     3 import java.io.BufferedReader;
     4 import java.io.IOException;
     5 import java.io.InputStreamReader;
     6 
     7 /**
     8  * @Auther: Xingzheng Wang
     9  * @Date: 2019/2/23 11:17
    10  * @Description: pattest
    11  * @Version: 1.0
    12  */
    13 public class PAT1046 {
    14     public static void main(String[] args) throws IOException {
    15         BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
    16         String[] first = reader.readLine().split(" ");
    17 
    18         int n = Integer.parseInt(first[0]);
    19         int[] dis = new int[n + 1];
    20         int[] arr = new int[n + 1];
    21         int sum = 0;
    22 
    23         for (int i = 1; i <= n; i++) {
    24             dis[i] = Integer.parseInt(first[i]);
    25             sum += dis[i];
    26             arr[i] = sum;
    27         }
    28         int m = Integer.parseInt(reader.readLine());
    29         for (int i = 0; i < m; i++) {
    30             String[] line = reader.readLine().split(" ");
    31             int s = Integer.parseInt(line[0]);
    32             int e = Integer.parseInt(line[1]);
    33             if (s > e) {
    34                 int temp = s;
    35                 s = e;
    36                 e = temp;
    37             }
    38             int pre1 = arr[e - 1] - arr[s - 1];
    39             int pre2 = sum - pre1;
    40             System.out.println(Math.min(pre1,pre2));
    41         }
    42     }
    43 }
  • 相关阅读:
    VS自带的诊断工具
    Electron学习
    PC跨*台
    .NET调试学习
    Mac使用
    SSL/TLS
    UKey学习
    授权机制OAuth、JWT
    代理服务器
    .NET相关源码查找
  • 原文地址:https://www.cnblogs.com/PureJava/p/10498084.html
Copyright © 2011-2022 走看看