6116 Problem E Shortest Distance (20)

Shortest Distance (20)

題目描述 

- 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. php

- 任務真的很簡單:給定高速公路上的N個出口,造成一個簡單的循環,你應該說出任何一對出口之間的最短距離。數組

輸入 

- 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. ide

- 每一個輸入文件都包含一個測試用例。 對於每種狀況,第一行包含整數N(在[3,105]中),後跟N個整數距離d1d2...Dn,其中Di是第i個出口和第(i+1)個出口之間的距離,Dn是第N個和第一個出口之間的距離。一行中的全部數字都用空格分隔。第二行給出正整數M(<=104),後面跟着M行,每行都包含一對出口編號,前提是出口編號從1到N。保證往返總距離不超過107。測試

輸出

- For each test case, print your results in M lines, each contains the shortest distance between the corresponding given pair of exits.
- 對於每一個測試用例,以M行打印結果,每行包含相應的給定出口對之間的最短距離。    spa

提交

思考 

    - 題意:給出N個出口之間的距離,而後輸入M對出口,計算這M對出口之間的最短距離,
    - 首先,在輸入每一個邊的時候,就計算兩個量,
    - 一個是這個環的總距離,用一個num累加就可實現,
    - 另外一個,是第一個頂點距離各個頂點的距離,用一維數組實現,
    - 每一個頂點的值等於輸入的距離加上上一個頂點的值,初始將1這個頂點的值置爲0,由於1到1自己就是0。
    - 再根據輸入的兩個頂點,將它們和頂點1之間的距離相減,就獲得了其中一個距離,
    - 另外一個距離經過環的總距離減去這個距離就能獲得了,
    - 而後比較兩個的大小,輸出最小的。code

AC

    

 #include <stdio.h>
 int main(){
       int n,m,i,a[100000],b[100000],num=0;
       scanf("%d",&n);
       for(i=1;i<=n;i++){
           scanf("%d",&a[i]);
           num +=  a[i]; //環的總距離
           b[i+1]=b[i]+a[i]; //第一個頂點距離各個頂點的距離
       } 
       int f1,f2,k1,k2;
       scanf("%d",&m);
       for(i=0;i<m;i++){
           scanf("%d %d",&f1,&f2);
           int t1=(f1<f2?f1:f2);
           int t2=(f1>f2?f1:f2);
           k1=b[t2]-b[t1];
           k2=num-k1;
           printf("%d\n",(k1>k2?k2:k1));
       }
       return 0;
  }
相關文章
相關標籤/搜索