zoukankan      html  css  js  c++  java
  • 树状数组模板

    区间求和:
    tree[t]中储存的是[t,t-lowbit(t)+1]中每个数的和。

    #include <iostream>
    #include <cstdio>
    #include <cstring>
    #include <cstdlib>
    
    using namespace std;
    
    #define MAXN 100
    
    int tree[MAXN];
    int N;
    
    int lowbit(int t)
    {
        return t&(-t);
    }
    
    void add(int index,int value)//单点更新 
    {
        for(int i=index ; i<=N ; i+=lowbit(i))
        {
            tree[i] += value;
        }
    }
    
    int getSum(int index)//区间查询 
    {
        int sum = 0;
        for(int i=index ; i>0 ; i-=lowbit(i))
        {
            sum += tree[i];
        }
        return sum;
    }
    
    int main(void)
    {
        cin>>N;
        memset(tree,0,sizeof(tree));
        for(int i=1 ; i<=N ; i++)
        {
            int mid;
            cin>>mid;
            add(i,mid);
        }
    
        return 0;
    }

    区间求最值
    tree[t]储存的是[t,t-lowbit(t)+1]中每个数的最大值。
    求区间最值的算法中还有一个board[i]数组,表示第i个数是多少。

        board[MAXN];
        void updata(int x)  //单点更新
        {  
            int lx, i;  
            while (x <= n)  
            {  
                tree[x] = board[x];  
                lx = lowbit(x);  
                for (i=1; i<lx; i<<=1)  
                    tree[x] = max(tree[x], tree[x-i]);  
                x += lowbit(x);  
            }         
        }
    
        int query(int x, int y) //区间查询 
        {  
            int ans = 0;  
            while (y >= x)  
            {  
                ans = max(board[y], ans);  
                y --;  
                for (; y-lowbit(y) >= x; y -= lowbit(y))  
                    ans = max(tree[y], ans);  
            }  
            return ans;  
        }  

    注意:LOWBIT无法处理0的情况,因为它的结果也是0,那么最终就是一个死循环

  • 相关阅读:
    访问控制模型+强制访问控制
    防火墙体系结构
    信息安全工程师手记
    关于PHPSESSIONID的一些发现
    中级测评师10-物联网
    WAPI学习记录
    1. Jenkins 入门使用
    Springboot druid监控配置
    Springboot 添加数据源报错
    mysql function 查询子级机构
  • 原文地址:https://www.cnblogs.com/vocaloid01/p/9514178.html
Copyright © 2011-2022 走看看