zoukankan      html  css  js  c++  java
  • [hihoCoder]HIHO Drinking Game

    hiho 69周挑战

    题解

    关键不要纠结于T是什么。

    观察发现,T越大,最后Ho的得分越高。对于任意的T,Ho的得分很容易计算。那么二分查找之就好了。

    注意,T = K时,不一定能保证Ho一定赢。若输入全是K,那么Ho就输了。

    #include <iostream>
    
    using namespace std;
    int N, K;
    int *d;
    //O(n)
    int ho_score(int T)
    {
            int res = 0;
            int volume = 0;
            for (int i = 0; i< N; ++i) {
                    volume += T;
                    if (volume <= d[i]) // hi wins
                    {
                            volume = 0;
                    }
                    else
                    {
                            volume -=d[i];
                            res++;
                    }
            }
            return res;
    }
    int gtt(int b,int e)
    {
            if(e==b+1) return e;
            if(e==b) return e;
            int m = (b+e)/2;
            if (ho_score(m) > N/2)
            {
                    return gtt(b,m);
            }
            else
            {
                    return gtt(m,e);
            }
    }
    int main()
    {
            cin >> N >> K;
            d = new int[N];
            for (int i = 0; i< N;++i) cin >> d[i];
            cout << gtt(0,K+1);/// K+1 !~~~~~~
            return 0;
    }
    

      

  • 相关阅读:
    重写
    mongodb版本区别
    mysql备份还原
    mysql备份恢复
    mysql的锁
    mysql索引
    mysql日志详解
    mysql基本语法
    mysql主从bin-log的三种方式
    mysql的GTID主从复制方式
  • 原文地址:https://www.cnblogs.com/shenbingyu/p/4923555.html
Copyright © 2011-2022 走看看