谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢谢
#include<bits/stdc++.h>
using namespace std;
struct node
{
int l,r;
int dat;
}t[0x66ccf];
int ant[0x66ccf];
void APJ(int a,int b,int c){
t[a].l=b;
t[a].r=c;
if(b==c){
t[a].dat=ant[b];
return;
}
int mid=(b+c)/2;
APJ(a*2,b,mid);
APJ(a*2+1,mid+1,c);
t[a].dat=t[2*a].dat+t[2*a+1].dat;
}
void Soytony(int a,int b,int c){
if(t[a].l==b){
t[a].dat=c;
return;
}
int mid=(b+c)/2;
if(b<=mid){
Soytony(a*2,b,c);
}
else{
Soytony(a*2+1,b,c);
}
t[a].dat=t[2*a].dat+t[2*a+1].dat;
}
long long K8he(int a,int b,int c){
if(t[a].l>=b && t[a].r<=c){
return t[a].dat;
}
long long jijidawang=0;
if(t[a].l>=b){
jijidawang+=K8he(2*a,b,c);
}
if(t[a].r<=c){
jijidawang+=K8he(2*a+1,b,c);
}
return jijidawang;
}
int main(){
int a,b;
cin>>a>>b;
for(int i=1;i<=a;i++){
cin>>ant[i];
}
APJ(1,1,b);
for(int i=1;i<=b;i++){
int c;
cin>>c;
if(c==1){
int x,y,z;
cin>>x>>y>>z;
for(int j=x;j<=y;j++){
Soytony(1,j,z);
}
}
else{
int x,y;
cin>>x>>y;
cout<<K8he(1,x,y)<<endl;
}
}
}
评测记录:here