WA求助
查看原帖
WA求助
795344
lfxxx_楼主2024/7/12 16:53

rt,直接从上帝造提的7分钟复制做来的

#include<bits/stdc++.h>
#define int long long
using namespace std;
const int N=1005;
int n,m;
int a[N][N],ai[N][N],aj[N][N],aij[N][N];
int lowbit(int x){return x&-x;}
void add(int x,int y,int d)
{
	for(int i=x;i<=n;i+=lowbit(i))
		for(int j=y;j<=m;j+=lowbit(j))
		{
			a[i][j]+=d;
			ai[i][j]+=d*x;
			aj[i][j]+=d*y;
			aij[i][j]+=d*x*y;
		}
}
int sum(int x,int y)
{
	int ret=0;
	for(int i=x;i;i-=lowbit(i))
		for(int j=y;j;j-=lowbit(j))
			ret+=a[i][j]*(x+1)*(y+1)-ai[i][j]*(y+1)-aj[i][j]*(x+1)+aij[i][j];
	return ret;
}
void update(int xl,int yl,int xr,int yr,int d)
{
	add(xl,yl,d);
	add(xr+1,yr+1,d);
	add(xl,yr+1,-d);
	add(xr+1,yl,-d);
}
int query(int xl,int yl,int xr,int yr)
{
	return sum(xr,yr)-sum(xl-1,yr)-sum(xr,yl-1)+sum(xl-1,yl-1);
}
signed main()
{
	cin>>n>>m;
	while(m--)
	{
		int op,xl,yl,xr,yr,k;
		cin>>op>>xl>>yl>>xr>>yr;
		if(op==1)
			cout<<query(xl,yl,xr,yr)<<'\n';
		else
			cin>>k,update(xl,yl,xr,yr,k);
	}
} 
2024/7/12 16:53
加载中...