树状数组可以看作一个受限制的线段树,它维护一个数组,最经典的树状数组支持的基本操作有两个:(1)改变某一个元素的值 (2)查询某一个区间内所有元素的和。在此基础上,经过简单的变形可以变成支持另一组操作:(1)把一个区间内所有元素都加上一个值 (2)查询某一个元素的值。这两个都是已经泛滥了的东西了,在...
x += lowbit(x); } }intgetmax(intl,intr){intans =0;while(r >= l) { ans = max(ans, c[r]); --r;while(r - lowbit(r) >= l) { ans = max(ans, d[r]); r -= lowbit(r); } }returnans; }intmain(){// freopen("input.txt", "r", stdin);// freopen("output.txt", ...
M;int s,c[maxn],d[maxn];char order;intlowbit(int x){returnx&(-x);}voidupdate(int x){while(x<=N){d[x]=c[x];int lx=lowbit(x);for(int i=1;i<lx;i<<=1)d[x]=max(d[x],d[x-i]);x+=lowbit(x);