uva 11093 just finish IT

来源:互联网 发布:阿里云服务器上搭建svn 编辑:程序博客网 时间:2024/06/06 00:41

题目:点击打开链接

正常的从起点1遍历到n的话一定会超时。简化的思路:对于每一个出发点,它的上一个测试的无法走完全程的起点所停止的地方,就是这一次的起点。在测试每个起点的过程中能够到达一个加油站A说明在到达时车内油至少为0,如果车到达不了加油站A+1说明A+1之前的都不能为起点。

#include <stdio.h>#include <string.h>int main (){    int a;    scanf("%d",&a);    int kase=0;    while(a--)    {        printf("Case %d: ",++kase);        int in[100000+5],out[100000+5];        int b;        scanf("%d",&b);        for(int i=0; i<b; i++)        {            scanf("%d",&in[i]);        }        for(int i=0; i<b; i++)        {            scanf("%d",&out[i]);        }        memcpy(in+b,in,sizeof(int)*b);        memcpy(out+b,out,sizeof(int)*b);        int l,r,ans=-1;        for(l=0;l<b;l=r)        {            int sum=0,num=0;r=l;            while(ans==-1&&(num+=(in[r]-out[r++]))>=0)                if(++sum==b)ans=l;            if(ans!=-1)break;        }        if(ans==-1) printf("NO\n");        else printf("%d\n",ans+1);    }    return 0;}


0 0
原创粉丝点击