1
```cpp
void build(long long s,long long t,long long p){
if(s==t){
d[p]=a[s];//b改d
return;
}
}
```
2
```cpp
if(l<=m) sum+=getsum(l,r,s,m,p<<1);//=改+=
if(r>m) sum+=getsum(l,r,m+1,t,(p<<1)|1);
```
3
```cpp
while(q--){
scanf("%lld%lld%lld",&x,&y,&z);
if(x==2){//1改为2
printf("%lld\n",getsum(y,z,1,n,1));
}
else{
scanf("%lld",&k),update(y,z,k,1,n,1);
}
}
```
这样应该就行了
by Didncan_yu @ 2023-08-21 18:43:33
@[AK_CCF](/user/571265) 6
by 2011qiqi @ 2023-08-21 18:47:17
@[yuziyang](/user/719289) 感谢巨佬
by Infinity_Fantasy @ 2023-08-21 19:48:24
@[yuziyang](/user/719289) orz
by Infinity_Fantasy @ 2023-08-21 19:48:44