首页 > 试题广场 >

Shortest Distance (20)

[编程题]Shortest Distance (20)
  • 热度指数:3007 时间限制:C/C++ 1秒,其他语言2秒 空间限制:C/C++ 64M,其他语言128M
  • 算法知识视频讲解
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.

输入描述:
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.


输出描述:
For each test case, print your results in M lines, each contains the shortest distance between the corresponding given pair of exits.
示例1

输入

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

输出

3
10
7
头像 大内高手
发表于 2020-04-09 16:30:56
本以为这是一道水题,但谁知水题也有“坑”啊! 先说一下情况,这个最终版本的答案是OK的,这是我第三遍做出来的。 第一个答案是暴力加和,比如求2-5,那我就从2-5加起来,然后用sum减去此和,然后取两者的较小值。但是后面一看N最大是 ,而M最大是 ,所以最多可能产生 次操作,肯定超时。 第二个答 展开全文