树状数组进阶

今天我们学习了树状数组进阶;

最长上升子序列:将函数的+改为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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值