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

[hihoCoder]HIHO Drinking Game

时间:2015-10-30 16:48:41      阅读:223      评论:0      收藏:0      [点我收藏+]

标签:

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;
}

  

[hihoCoder]HIHO Drinking Game

标签:

原文地址:http://www.cnblogs.com/shenbingyu/p/4923555.html

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