PAT (Advanced Level) Practise 1046 Shortest Distance (20)
2017-07-17 13:04
459 查看
1046. Shortest Distance (20)
时间限制100 ms
内存限制
65536 kB
代码长度限制
16000 B
判题程序
Standard
作者
CHEN, Yue
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
题意:给你一个环形路上相邻两点的距离,求任意两点之间的最短路
解题思路:求出距离的前缀和即可
#include <iostream> #include <cstdio> #include <cmath> #include <cstring> #include <algorithm> #include <stack> #include <queue> #include <vector> #include <map> using namespace std; #define ll long long int n,k; int sum[100090]; int main() { while(~scanf("%d",&n)) { memset(sum,0,sizeof sum); int x; for(int i=2;i<=n+1;i++) { scanf("%d",&x); sum[i]=sum[i-1]+x; } scanf("%d",&k); int u,v; while(k--) { scanf("%d %d",&u,&v); if(u>v) swap(u,v); printf("%d\n",min(sum[v]-sum[u],sum[u]+sum[n+1]-sum[v])); } } return 0; }
相关文章推荐
- PAT (Advanced Level) Practise 1046 Shortest Distance (20)
- PAT (Advanced Level) Practise 1112 Stucked Keyboard (20)
- PAT (Advanced Level) Practise - 1001 A+B Format (20)
- PAT (Advanced Level) Practise 1108 Finding Average (20)
- 1023. Have Fun with Numbers (20)【字符串操作】——PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1104 Sum of Number Segments (20)
- PAT (Advanced Level) Practise 1065 A+B and C (64bit) (20)
- PAT (Advanced Level) Practise 1128 N Queens Puzzle (20)
- PAT (Advanced Level) Practise 1084 Broken Keyboard (20)
- PAT (Advanced Level) Practise 1092 To Buy or Not to Buy (20)
- 1100. Mars Numbers (20)【字符串处理】——PAT (Advanced Level) Practise
- PAT (Advanced Level) Practise 1120 Friend Numbers (20)
- PAT (Advanced Level) Practise 1042 Shuffling Machine (20)
- PAT (Advanced Level) Practise 1041 Be Unique (20)
- PAT-PAT (Advanced Level) Practise 1001. A+B Format (20) 【二星级】
- PAT (Advanced Level) Practise 1019 General Palindromic Number (20)
- PAT (Advanced Level) Practise 1001. A+B Format (20)
- PAT (Advanced Level) Practise - 1096. Consecutive Factors (20)
- PAT (Advanced Level) Practise 1100 Mars Numbers (20)
- 1069. The Black Hole of Numbers (20)【模拟】——PAT (Advanced Level) Practise