社区讨论
WA声一片,用树状数组写的,求调(玄关))
P3372【模板】线段树 1参与者 1已保存回复 0
讨论操作
快速查看讨论及其快照的属性,并进行相关操作。
- 当前回复
- 0 条
- 当前快照
- 1 份
- 快照标识符
- @lryeivjq
- 此快照首次捕获于
- 2024/01/29 12:00 2 年前
- 此快照最后确认于
- 2024/01/29 14:13 2 年前
CPP
#include<bits/stdc++.h>
using namespace std;
int n,m;
long long fw[100005],fw1[100005],a[100005];
void add(int p,int v){
for(long long q=p*v;p<=n;p+=(p&-p)){
fw[p]+=v;
fw1[p]=q;
}
return ;
}
int query(int p){
long long res=0;
for(int i=p;i!=0;i-=(i&-i))
res+=fw[i]*(p+1)-fw1[i];
return res;
}
int query1(int l,int r){
return query(r)-query(l-1);
}
int main(){
ios::sync_with_stdio(false);
cin.tie(nullptr);
cin>>n>>m;
for(int i=1;i<=n;i++)
cin>>a[i];
for(int i=n;i>=1;i--)
add(i,a[i]-=a[i-1]);
for(int i=1;i<=m;i++){
int type;
cin>>type;
if(type==1){
int l,r,k;
cin>>l>>r>>k;
add(l,k);
add(r+1,-k);
}
else{
int l,r;
cin>>l>>r;
cout<<query1(l,r)<<'\n';
}
}
return 0;
}
回复
共 0 条回复,欢迎继续交流。
正在加载回复...