首页 > 代码库 > POJ2309BST【树状数组的理解】
POJ2309BST【树状数组的理解】
大意:
对于这个树
告诉你一个节点问这个节点下的最小值和最大值
分析:
这个题考查对于树状数组的理解, 每个节点的前一个节点都是依次向前的 比如 10--8--4--2--1 后一个节点都是一次往后的比如10--12--16……
那么我们观察发现每个节点的最小值都是他爹+1,最大值都是他妈-1
代码:
1 #include <iostream> 2 #include <cstdio> 3 #include <cstring> 4 using namespace std; 5 6 int lowbit(int x) { 7 return x & ( - x ); 8 } 9 10 int main() {11 int n;12 int t;13 scanf("%d",&t);14 while(t--) {15 scanf("%d",&n);16 int n1 = n - lowbit(n);17 printf("%d", n1 + 1);18 int n2 = n + lowbit(n);19 printf(" %d\n", n2 - 1);20 }21 }
POJ2309BST【树状数组的理解】
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。