hihocoder-1498-Diligent Robots
Posted zhang-yd
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了hihocoder-1498-Diligent Robots相关的知识,希望对你有一定的参考价值。
hihocoder-1498-Diligent Robots
#1498 : Diligent Robots
描述
There are N jobs to be finished. It takes a robot 1 hour to finish one job.
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.
So what is the minimum number of hours to finish N jobs?
Note two or more robots working on the same job or building the same robot won‘t accelerate the progress.
输入
The first line contains 2 integers, N and Q.
For 70% of the data, 1 <= N <= 1000000
For 100% of the data, 1 <= N <= 1000000000000, 1 <= Q <= 1000
输出
The minimum number of hours.
- 样例输入
-
10 1
- 样例输出
-
5
题解:
使用贪心算法的思想。
样本复制之后需要去生产才有效,所以机器人必定是先复制完。
还有一个想法是是否需要一边复制一边生产,这个想法是否定的,假如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;
以上是关于hihocoder-1498-Diligent Robots的主要内容,如果未能解决你的问题,请参考以下文章