PAT甲级1046 Shortest Distance (20 分)

Posted ldudxy

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PAT甲级1046 Shortest Distance (20 分)相关的知识,希望对你有一定的参考价值。

题意:

输入一个正整数N(<=1e5),代表出口的数量,接下来输入N个正整数表示当前出口到下一个出口的距离。接着输入一个正整数M(<=10000),代表询问的次数,每次询问输入两个出口的序号,输出他们之间的最小距离。

代码:

#define HAVE_STRUCT_TIMESPEC
#include<bits/stdc++.h>
using namespace std;
int dis[100007],sum[100007];
int main(){
ios::sync_with_stdio(false);
cin.tie(NULL);
cout.tie(NULL);
int n;
cin>>n;
for(int i=1;i<=n;++i){
cin>>dis[i];
sum[i]=sum[i-1]+dis[i];
}
int q;
cin>>q;
for(int i=1;i<=q;++i){
int u,v;
cin>>u>>v;
if(v<u)
swap(u,v);
int x=sum[v-1]-sum[u-1];
int y=sum[n]-x;
cout<<min(x,y)<<" ";
}
return 0;
}

以上是关于PAT甲级1046 Shortest Distance (20 分)的主要内容,如果未能解决你的问题,请参考以下文章

pat 1046 Shortest Distance(20 分) (线段树)

PAT 甲级 A1046 (2019/01/28)

1046 Shortest Distance (20 分)

1046 Shortest Distance (20分)

(C++)1046 Shortest Distance

A1046——入门模拟 Shortest Distance