朋友的代码,看不懂,求dalao解释
查看原帖
朋友的代码,看不懂,求dalao解释
1613188
linzhiyu615楼主2025/7/29 11:29
#include<bits/stdc++.h>
using namespace std;
int a[3],num[105];
void build(int l,int r,int now){
	if(l==r){
		num[now]=0;
		return;
	}
	int mid=(l+r)/2;
	build(l,mid,now*2);
	build(mid+1,r,now*2+1);
	num[now]=num[now*2]+num[now*2+1];
}
void modify(int l,int r,int now,int x){
	if(l==r){
		num[now]=a[l];
		return;
	}
	int mid=(l+r)/2;
	if(x<=mid)modify(l,mid,now*2,x);
	else modify(mid+1,r,now*2+1,x);
	num[now]=num[now*2]+num[now*2+1];
	return;
}
int query(int l,int r,int now,int nl,int nr){
	if(nl<=l&&nr>=r)return num[now];
	int mid=(l+r)/2,sum=0;
	if(nl<=mid)sum+=query(l,mid,now*2,nl,nr);
	if(nr>mid)sum+=query(mid+1,r,now*2+1,nl,nr);
	return sum;
}
int main(){
	for(int i=1;i<=2;i++)cin>>a[i];
	build(1,2,1);
	modify(1,2,1,1),modify(1,2,1,2);
	cout<<query(1,2,1,1,1)+query(1,2,1,2,2);
	return 0;
}
2025/7/29 11:29
加载中...