欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}

上一篇: 开关灯

下一篇: