hihocoder-1498-Diligent Robots

hihocoder-1498-Diligent Robots算法

 

#1498 : Diligent Robots

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

There are N jobs to be finished. It takes a robot 1 hour to finish one job.ide

At the beginning you have only one robot. Luckily a robot may build more robots identical to itself. It takes a robot Q hours to build another robot.  ui

So what is the minimum number of hours to finish N jobs?spa

Note two or more robots working on the same job or building the same robot won't accelerate the progress.code

输入

The first line contains 2 integers, N and Q.  blog

For 70% of the data, 1 <= N <= 1000000  内存

For 100% of the data, 1 <= N <= 1000000000000, 1 <= Q <= 1000it

输出

The minimum number of hours.io

样例输入
10 1
样例输出
5

 

 

 

题解:class

  使用贪心算法的思想。

  样本复制以后须要去生产才有效,因此机器人一定是先复制完。

  还有一个想法是是否须要一边复制一边生产,这个想法是否认的,假如n生产m复制,获得的是 m + (q+1)*n.  若是是一块儿复制,则获得的是 (m + n)*q , 大于前者。

 

 

#include <cstdio> 
#include <cstdlib> 

int main()
{
    int q; 
    long long cnt, n, k; 
    while(scanf("%lld %d", &n, &q) != EOF)
    {
        cnt = 0; 
        k = 1; 
        while(2*q*k < n)
        {
            k *= 2; 
            cnt += q; 
        }
        cnt += n / k; 
        if(n%k != 0)
        {
            cnt += 1; 
        }
        printf("%lld\n", cnt );
    }
    return 0; 
}
相关文章
相关标签/搜索