树状数组

· · 个人记录

概述

操作

复杂度分析

实现原理

il int lowbit(int x){return x&(-x);}
struct tree_array{
    int sum[maxn];
    il void ins(int k,int v){for(;k<=n;k+=lowbit(k)) sum[k]+=v; return;}
    il int get(int k){static int ret; ret=0; for(;k;k-=lowbit(k)) ret+=sum[k]; return ret;}
};

扩展

区间加,单点查

前缀 min/max,单点查

例题

P4309 [TJOI2013] 最长上升子序列