- 5 1 2 4 14 9
- 3
- 1 3
- 2 5
- 4 1
- 3
- 10
- 7
题目大意
一个甜甜圈,求该圈上标准的任意两点间,抵达的最短距离
思路
记甜甜圈的总长为sum,length[z]表示点z抵达点1的距离,lebgth[1] = 0
那么任意两点A与B间的最短距离为
min(sum-abs(length[A]-length[B]),abs(length[A]-length[B]))
- #include
- using namespace std;
- int main()
- {
- int N,length[100001]={0},sumLen=0,len;
- cin >> N;
- for(int z=1;z<=N;z++){
- cin >> len;
- length[z+1] = sumLen = sumLen + len;
- }
- cin >> N;
- while (N--){
- int a,b;
- cin >> a >> b;
- int minRoad = abs(length[a]-length[b]);
- minRoad = min(minRoad,sumLen-minRoad);
- cout << minRoad << endl;
- }
- return 0;
- }
