规律:,发现①环形的总长度是可求的②A到B之间的距离等于(A到0距离)减去(B到0距离)③任意节点到0的距离都可以在输入时求出。
#include<bits/stdc++.h>
using namespace std;
#define ll long long
const double pi=acos(-1.0);
const double eps=1e-8;
const int maxn=100005;
int a[maxn];
ll sum[maxn];
ll maxx;
int main()
{
int n;
scanf("%d",&n);
maxx=0;
for(int i=1; i<=n; i++)
{
scanf("%d",&a[i]);
sum[i]=sum[i-1]+a[i];
maxx+=a[i];
}
int m;
scanf("%d",&m);
while(m--)
{
int x,y;
scanf("%d%d",&x,&y);
ll ans=0;
if(x<y)
{
ll ans1=0;
ll ans2=0;
ans1=sum[y-1]-sum[x-1];
ans2=sum[x-1]+maxx-sum[y-1];
ans=min(ans1,ans2);
}
else
{
ll ans1=0;
ll ans2=0;
ans1=sum[y-1]+maxx-sum[x-1];
ans2=sum[x-1]-sum[y-1];
ans=min(ans1,ans2);
}
printf("%lld\n",ans);
}
}