树状数组:区间修改,区间查询

image
image

void update1(ll k,ll x) {
int u=k;
while(k<=n) {
c1[k]+=x;
c2[k]+=(u-1)*x;
k+=lowbit(k);
}
}
void update(ll l,ll r,ll x) {
update1(l,x);
update1(r+1,-x);
}
ll query1(ll k) {
ll ans=0;
while(k>0) {
ans+=c1[k];
k-=lowbit(k);
}
return ans;
}
ll query2(ll k) {
ll ans=0;
while(k>0) {
ans+=c2[k];
k-=lowbit(k);
}
return ans;
}
ll query(ll l,ll r) {
return r*query1(r)-query2(r)-(l-1)*query1(l-1)+query2(l-1);
}
posted @   dddddadaplllllane  阅读(30)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· AI 智能体引爆开源社区「GitHub 热点速览」
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
点击右上角即可分享
微信分享提示