题意是:所有的展馆围成一个圈,每个展馆之间有一定的距离,其中L1是1和2展馆的距离,依次类推,Ln呢则是1和N之间的距离,只有1展馆有进口和出口,
其余的展馆只有出口,本题就是求参观完所有的展馆最少会走多远的路程。
这道题就是要打一下表,不然就会超时。。。。。。
#include<stdio.h>
#include<string.h>
long long int len[100005];
long long int len1[100005];
long long int len2[100005];
long long int len3[100005];
int main(){
long long int T,n;
while(~scanf("%lld",&T)){
while(T--){
memset(len,0,sizeof(len));
memset(len1,0,sizeof(len1));
memset(len2,0,sizeof(len2));
memset(len3,0,sizeof(len3));
scanf("%lld",&n);
for(int i=0;i<n;i++){
scanf("%lld",&len[i]);
}
len1[0]=0;
for(int i=1;i<n;i++)
len2[0]+=len[i];
len3[0]=len2[0];
for(int i=1;i<n;i++){
len1[i]=len1[i-1]+len[i-1];
len2[i]=len2[i-1]-len[i];
if(len1[i]>len2[i]) len3[i]=len1[i]+2*len2[i];
else len3[i]=len1[i]*2+len2[i];
}
long long int temp=len3[0];
for(int i=0;i<n;i++){
if(len3[i]<temp)
temp=len3[i];
}
printf("%lld\n",temp);
}
}
return 0;
}