题意:
找bug位置,可以加print,运行。但是+printf 和运行都需要时间,询问最坏情况下,最少需要多少时间
思路:
之前写的二分,但是WA了,应该是有反例。记忆化搜索一下,这种情况包括了二分,以及更多的情况
记忆化搜索:
枚举加的printf的个数,找子问题最小
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
#include<vector>
#include <map>
#include <queue>
using namespace std;
typedef long long ll;
const int N=1000005;
const ll inf=0x3f3f3f3f3f3f3f3f;
ll dp[N];
ll n ,p, r;
ll dfs(ll n)
{
if(n<=1)
return 0;
if(dp[n]!=inf) return dp[n];
for(ll i=1;i<n;i++)
{
dp[n]=min(dp[n],i*p+dfs((n+i)/(i+1))+r);
}
return dp[n];
}
int main()
{
cin>>n>>r>>p;
for(int i=0;i<=n;i++)
dp[i]=inf;
cout<<dfs(n);
}