zoukankan      html  css  js  c++  java
  • UVA 11093 Just Finish it up 环形跑道 (贪心)

    有一个环形跑道,上面有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
    ",ans+1);
            else puts("Not possible");
        }
        return 0;
    }
  • 相关阅读:
    高斯消元
    逻辑运算符之优先级&&and、or
    康托展开
    关于bootstrap的双层遮罩问题
    写好页面在内网内访问
    swiper插件的一些坑
    第一篇博客
    poj 3415 Common Substrings
    poj 1509 Glass Beads
    poj 3260 The Fewest Coins
  • 原文地址:https://www.cnblogs.com/jerryRey/p/4715522.html
Copyright © 2011-2022 走看看