0
点赞
收藏
分享

微信扫一扫

Dropping Balls—满二叉树


Dropping Balls—满二叉树_满二叉树


题意:

给出一棵满二叉树,编号从上往下、从左向右进行编号,然后每次询问给出一个树的深度,以及当前查询的是第几个球,问这个球的编号是多少

一个球来的时候能来左边就先来左边,不能的话才去右面

对于满二叉树还有一个性质,一个节点的左子节点的编号是 2 * x,右节点是 2 * x + 1

然后就是进行模拟就行了

如果说一个节点被访问了 t 次,如果t % 2 == 1的话,那么,会有(t + 1) / 2的在左面, t / 2的在右面

int n;
while(cin >> n&&n != -1){
while(n--){
int a=read,b=read;
ll ans = 1;
for(int i=1;i<a;i++){
if(b % 2 == 1){
b ++;
b /= 2;
ans *= 2;
}
else {
b /= 2;
ans *= 2;
ans ++;
}
///cout << ans <<endl;
}
cout << ans <<endl;
}
}


举报

相关推荐

0 条评论