题意是给你一个满二叉树,给一个数字,求以这个数为根的树中最大值和最小值。
理解树状数组中的lowbit的用法。
目前的个人理解就是 lowbit 求出来的是这个根的管辖区域。
代码:
#include <stdio.h>
int lowbit(int n)
{
return n & (-n);
}
int main()
{
int ncase;
scanf("%d", &ncase);
while (ncase--)
{
int k;
scanf("%d", &k);
printf("%d %d\n", k - lowbit(k) + 1, k + lowbit(k) - 1);
}
return 0;
}