spoj Circleland题解

来源:互联网 发布:淘宝后台客服电话 编辑:程序博客网 时间:2024/05/22 01:36

题意是:所有的展馆围成一个圈,每个展馆之间有一定的距离,其中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;}



原创粉丝点击