用的是贪心。
下面是代码:
#include<bits/stdc++.h>
using namespace std;
typedef pair<int,int> P;
queue<P> q;
P p;
int main(){
long long t,a,b;
cin>>t;
while(t--){
cin>>a>>p.first;
b=100000000;
q.push(P(p.first,0));
while(q.size()){
p=q.front();
q.pop();
if(p.first<a){
p.second+=a-p.first;
if(p.second<b) b=p.second;
}else if(p.first%2==0){
if(p.first/2<a){
q.push(P(p.first/2,p.second+1));
}
else if( p.first - a > a - p.first/2){
q.push(P(p.first/2,p.second+1));
}else{
p.second+=p.first-a;
if(b>p.second) b=p.second;
}
}else{
q.push(P(p.first+1,p.second+1));
q.push(P(p.first-1,p.second+1));
}
}
cout<<b<<endl;
}
return 0;
}