今天我们学习了树状数组进阶;
最长上升子序列:将函数的+改为max,再用p(a[i]-1)求出在前面比我小的个数
再用q(a[i],l+1)接着插入;
BIT-2:用到差分,差分:S[i]=a[i]-a[i-1]; 查分数列的前缀和等于原序列;
将l-r加k:S[l]+k; S[r+1]-k; 再求前缀和;
BIT-3:用两个分开的树状数组;
S[1]=a[1];
S[2]=a[1]+a[2];
S[3]=a[1]+a[2]+a[3];
...
S[n]=a[1]+a[2]+...+a[n];
S[1]+...+S[n]=a[1]*n+a[2]*(n-1)+a[n]*n;
前缀和的前缀和:和BIT-3差不多,注意的是添加的不是x而是a[i]-x; 改完之后
不要忘了将a[i]改为x;