UVa 679 Dropping Balls【完全二叉树】
程序员文章站
2024-03-18 21:58:28
...
乍一看完全二叉树用一个数组模拟一下就行了,实则如此做复杂度太高。
其实每个根都有两种状态,相邻的小球肯定去了不同的子树,比如4个球就有两个去了左子树,两个去了右子树。那么对于分别的子树来说,就相当于有两个球来到了这个子树的根,所以不用模拟,结果只跟奇偶性有关。
//UVa 679 完全二叉树
int main(){
int D,I,n;
while(scanf("%d",&n)!=EOF&&n!=-1){
while(n--){
scanf("%d%d",&D,&I);
int k=1;
for(int i=0;i<D-1;i++){
if(I%2) {k=k*2;I=(I+1)/2;}
else {k = k*2+1;I/=2;}
}
printf("%d\n",k);
}
}
return 0;
}
上一篇: 开关灯
推荐阅读
-
UVa 679 Dropping Balls【完全二叉树】
-
UVA679 小球下落 Dropping Balls
-
Uva679【Dropping Balls】找规律java题解
-
【数组二叉树】UVA - 679 Dropping Balls
-
Uva679 (完全二叉树
-
【例题 6-6 UVA - 679】Dropping Balls
-
例题6-6 小球下落(Dropping Balls, UVa 679)
-
【UVA679】Dropping Balls 解题报告
-
UVa 679 例题6-6 小球下落(Dropping Balls)
-
二叉树--uva 679 Dropping Balls 二叉树数组模拟