#include<iostream>
using namespace std;
int main(){
int n;
scanf("%d",&n);
int dir[n+1],sum=0,temp;
dir[0]=0;
for(int i=1;i<=n;i++){
scanf("%d",&temp);
sum+=temp;
dir[i]=sum;//i i+1
}
int m;
scanf("%d",&m);
for(int i=0;i<m;i++){
int ii,rr,temp1;
scanf("%d%d",&ii,&rr);
if(ii>rr){
swap(ii,rr);
}
temp1=dir[rr-1]-dir[ii-1];
printf("%d\n",min(temp1,sum-temp1));
}
return 0;
}
总结
1.环与dijkstra思想类似固定一个点,求固定点到其他所有点的距离,并且计算总距离和,那半边的距离相减即可
2.注意要初始化起点为0
英语
问题 环的处理 无