TLE,咋剪枝啊?(没学过专业剪枝,莫怪)
#include<bits/stdc++.h>
using namespace std;
int k,t,n;
int px(int x,int r,int m,int v){
if(r>k&&v>k)
return 0;
if(x<0&&m<0)
return 0;
if(x-(k-r)>n&&m-(k-v)>n)
return 0;
if(x==n&&k==r||m==n&&v==k)
return 1;
if(px(x-1,r+1,x*2,r+1)==1)
return 1;
else
if(px(m*2,v+1,m-1,v+1)==1)
return 1;
return 0;
}
int main(){
cin>>t;
while(t--){
cin>>k>>n;
if(pow(2,k)<n){
cout<<"No"<<endl;
continue;
}
if(px(1,0,2,1)==1){
cout<<"Yes"<<endl;
}
else cout<<"No"<<endl;
}
return 0;
}