AC0个点,求大佬教教
查看原帖
AC0个点,求大佬教教
910962
LoTLaneyyat楼主2023/11/9 17:43

用的是贪心。

下面是代码:

#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;
}
2023/11/9 17:43
加载中...