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

    晚上脑子不清醒,正巧最近搞数据结构,写点基本操作,树状数组最短,先开它。

    #include<bits/stdc++.h>
    #define lowbit(x) (x&(-x)) //树状数组的灵魂
    using namespace std;
    int tr1[15000],tr2[15000],tr3[15000];
    //  tr1:单点改,区间查 ||差分,区间改,单点查
    //  tr2:前缀最大值,单点改
    //  tr3:区间异或,单点改,区间查
    void add1(int i,int val){
        for(;i<=Max&&i;i+=lowbit(i))
            tr1[i]+=val;
    }
    int ask1(int i){
        int ans=0;
        for(;i;i-=lowbit(i))
            ans+=tr1[i];
        return ans;
    }
    void add2(int i,int val){
        for(;i<=Max&&i;i+=lowbit(i))
            tr2[i]=max(tr2[i],val);
    }
    int ask2(int i){
        int ans=-0i7fffffff;
        for(;i;i-=lowbit(i))
            ans=max(ans,tr2[i]);
        return ans;
    }
    void add3(int i,int val){
        for(;i<=Max&&i;i+=lowbit(i))
            tr3[i]^=val;
    }
    int ask3(int i){
        int ans=0;
        for(;i;i-=lowbit(i))
            ans^=tr3[i];
        return ans;
    }
    int main(){
        return 0;    
    }
    View Code

    (短的不成样子……)

  • 相关阅读:
    KnowYoueSelf
    计算机组成原理--海明码的编码和校验方法(易懂)
    html5新特性
    web前端性能优化
    web标准
    《王者归来》笔记-安全&性能01
    vue核心最基本功能
    BOM&DOM
    JavaScript-语法
    前端04
  • 原文地址:https://www.cnblogs.com/Yu-shi/p/11253063.html
Copyright © 2011-2022 走看看