题目描述
blablabla
样例
#include "bits/stdc++.h"
using namespace std;
int n,k;
void solve()
{
vector<int> dp(1e5+10,1e9);
dp[n] = 0;
for(int i=n-1;i>=0;i--)
{
dp[i] = dp[i+1] + 1;
for(int j=1;j<=20;j++)
{
long long p= i*(1<<j);
if(p>1e5) break;
dp[p] = min(dp[i] + j,dp[p]);
}
}
if(n<=k) {
for (int i = n; i <= k; i++) {
dp[i] = min({dp[i - 1] + 1,dp[i + 1] + 1,dp[i]});
for(int j=1;j<=20;j++)
{
long long p= i*(1<<j);
if(p>1e5) break;
dp[p] = min(dp[i] + j,dp[p]);
}
}
}
cout<<dp[k]<<'\n';
}
int main()
{
while(cin>>n>>k)
{
solve();
}
return 0;
}
算法1
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla