hihocoder 1498

#1498 : Diligent Robo

题意:有n个工作需要做,每个机器人一分钟可以做完一份工作,每个机器人可以花q分钟复制本身,最开始有一个机器人,求最少多少分钟可以做完所有工作

思路:复制肯定全部在最开始复制,暴力复制了n次,求时间,取最小的

AC代码:

#include "iostream"
#include "string.h"
#include "stack"
#include "queue"
#include "string"
#include "vector"
#include "set"
#include "map"
#include "algorithm"
#include "stdio.h"
#include "math.h"
#define ll long long
#define bug(x) cout<<x<<" "<<"UUUUU"<<endl;
#define mem(a) memset(a,0,sizeof(a))
using namespace std;
const int N=1e5+100;
ll n,q,t,k,ans=1e18;
int main(){
    cin>>n>>q;
    for(int i=0; i<64; ++i){
        ll c=1LL<<i;
        if(n%c!=0) t=1;
        else t=0;
        t+=i*q+n/c;
        ans=min(ans,t);
    }
    cout<<ans;
    return 0;
}
原文地址:https://www.cnblogs.com/max88888888/p/7123103.html