zoukankan      html  css  js  c++  java
  • 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
    ", n2 - 1);
    20     }
    21 }
    View Code
  • 相关阅读:
    单(single)
    cdq分治
    寿司
    qtth
    二分,倍增的一些思考(lost my music:可持久化栈)
    手写堆、哈希表
    保留字,关键字
    测试19,20,21
    要买的书
    测试18:T2:可爱精灵宝贝
  • 原文地址:https://www.cnblogs.com/zhanzhao/p/3991600.html
Copyright © 2011-2022 走看看