求助MLE
查看原帖
求助MLE
428358
Grisses楼主2021/11/28 14:35

求各路神仙帮助

#include<bits/stdc++.h>
#define int long long int
using namespace std;
int lowbit(int x){return x&-x;}
int t1[2050][2050],t2[2050][2050],t3[2050][2050],t4[2050][2050];
int n,m;
void Add(int x,int y,int k){
	for(int i=x;i<=n;i+=lowbit(i)){
		for(int j=y;j<=m;j+=lowbit(j)){
			t1[i][j]+=k;
			t2[i][j]+=k*x;
			t3[i][j]+=k*y;
			t4[i][j]+=k*x*y;
		}
	}
}
int Getsum(int x,int y){
	int ans=0;
	for(int i=x;i;i-=lowbit(i)){
		for(int j=y;j;j-=lowbit(j)){
			ans+=t1[i][j]*(x+1)*(y+1)+t4[i][j]-t2[i][j]*(y+1)-t3[i][j]*(x+1);
		}
	}
	return ans;
}
signed main()
{
	scanf("X %lld%lld",&n,&m);
	char op;
	int a,b,c,d,x;
	while(cin>>op){
		if(op=='L'){
			scanf("%lld%lld%lld%lld%lld",&a,&b,&c,&d,&x);
			Add(a,b,x);
			Add(a,d+1,-x);
			Add(c+1,b,-x);
			Add(c+1,d+1,x);
		}
		else{
			scanf("%lld%lld%lld%lld",&a,&b,&c,&d);
			printf("%lld\n",Getsum(c,d)-Getsum(c,b-1)-Getsum(a-1,d)+Getsum(a-1,b-1));
		}
	}
	return 0;
}
2021/11/28 14:35
加载中...