码迷,mamicode.com
首页 > 其他好文 > 详细

poj 2309 BST 使用树状数组的lowbit

时间:2014-07-23 13:12:16      阅读:273      评论:0      收藏:0      [点我收藏+]

标签:使用   os   io   re   c   amp   

如果领悟了树状数组中的lowbit,这道题就是极其简单的,最底层都是奇数,用lowbit(x)寻找x的父亲,然后x的父亲-1就是最大数

至于lowbit是如何计算的嘛,寻找x的父亲,其实就是x+2^x的二进制末尾0的个数。

#include<iostream>
#include<stdio.h>
using namespace std;
typedef long long ll;
 ll lowbit(int x){
    return x&(-x);
}
int main(){
    ll n,a;
    cin>>n;
    while(n--){
        cin>>a;
        if(a%2!=0){
            cout<<a<<" "<<a<<endl;
        }
        else{
            ll max=a+lowbit(a)-1;
            ll min=a-(max-a);
            cout<<min<<" "<<max<<endl;
        }
    }
}

poj 2309 BST 使用树状数组的lowbit,布布扣,bubuko.com

poj 2309 BST 使用树状数组的lowbit

标签:使用   os   io   re   c   amp   

原文地址:http://blog.csdn.net/youngyangyang04/article/details/38060051

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!