码迷,mamicode.com
首页 > 其他好文 > 详细

UVA 11093 Just Finish it up 环形跑道

时间:2015-08-09 18:28:24      阅读:131      评论:0      收藏:0      [点我收藏+]

标签:

有一个环形跑道,上面有n个加油站,到i号加油站可以加pi的油,跑到下一站要花费qi的油,起点任意选,问是否有一个起点可跑完整个跑道。

从i开始跑,如果遇到某个站j不能跑了,那么从i到j之间的站开始跑,到j的油不会增加,所以下次直接从j+1开始跑。复杂度是O(n)

#include<bits/stdc++.h>
using namespace std;
#define bug(x) cout<<#x<<‘=‘<<x<<endl;
const int maxn = 1e5+5;

int p[maxn], q[maxn];

int Run(int n)
{
    for(int st = 0; st < n; st++){
        int oil = 0;
        int i;
        for(i = 0; i < n; i++){
            int cur = (i+st)%n;
            oil += p[cur];

            if(oil<q[cur]){ st += i; break; }
            oil -= q[cur];
        }
        if(i == n) return st;
    }
    return -1;
}

int main()
{
    //freopen("in.txt","r",stdin);
    int T; scanf("%d",&T);
    for(int k = 1; k <= T; k++){
        int n;scanf("%d",&n);
        for(int i = 0; i < n; i++) scanf("%d",p+i);
        for(int i = 0; i < n; i++) scanf("%d",q+i);
        printf("Case %d: ",k);
        int ans = Run(n);
        if(~ans) printf("Possible from station %d\n",ans+1);
        else puts("Not possible");
    }
    return 0;
}

 

UVA 11093 Just Finish it up 环形跑道

标签:

原文地址:http://www.cnblogs.com/jerryRey/p/4715522.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!