这都会MLE?!
查看原帖
这都会MLE?!
521890
上帝之鹰楼主2022/3/13 15:21
#include<iostream>
using namespace std;
int m,n,x,y,k;
int a[10005],num[40005],addv[40005];
void build(int o,int L,int R){
	if(L==R){
		num[o]=a[L];
		return;
	}
	int mid=(L+R)/2;
	build(o*2,L,mid);
	build(o*2+1,mid+1,R);
	num[o]=num[o*2]+num[o*2+1];
}
void update(int o,int L,int R){
	if(L>=x&&R<=y){
		addv[o]+=k;
		num[o]+=(x-y+1)*k;
		return;
	}
	int mid=(L+R)/2;
	build(o*2,L,mid);
	build(o*2+1,mid+1,R);
	num[o]=num[o*2]+num[o*2+1];
}
int query(int o,int L,int R){
	if(L>=x&&R<=y){
		return num[o];
	}
	int mid=(L+R)/2;
	if(y<mid){
		return query(o*2,L,mid)+addv[o];
	}
	else{
		return query(o*2,mid+1,R)+addv[o];
	}
}
int main(){
	cin>>n>>m;
	for(int i=1;i<=n;++i){
		cin>>a[i];
	}
	build(1,1,n);
	int eq;
	for(int i=0;i<m;++i){
		cin>>eq;
		if(eq==1){
			cin>>x>>y>>k;
			update(1,1,n);
		}
		else{
			cin>>x;
			y=x;
			cout<<query(1,1,n)<<endl;
		}
	}
	return 0;
}

满屏MLE 当场不解

2022/3/13 15:21
加载中...