为啥MLE了
查看原帖
为啥MLE了
397982
Deuteron楼主2022/12/7 10:55
#include<iostream>
#define int long long
#define lowbit(x) x&(-x)
using namespace std;
const int N=2e3+100;
int f[N][N][4];
char op;
int n,m,a,b,c,d,k;
int update(int x,int y,int d){
    for(int i=x;i<=n;i+=lowbit(i)){
        for(int j=y;j<=m;j+=lowbit(j)){
            f[i][j][0]+=d;
            f[i][j][1]+=d*x;
            f[i][j][2]+=d*y;
            f[i][j][3]+=d*x*y;
        }
    }
}
int query(int x,int y,int d){
    int ans=0;
    for(int i=x;i;i-=lowbit(i)){
        for(int j=y;j;j-=lowbit(j)){
            ans+=f[i][j][d];
        }
    }
    return ans;
}
int s(int x,int y){
    return query(x,y,0)*(x+1)*(y+1)-query(x,y,1)*(y+1)-query(x,y,2)*(x+1)+query(x,y,3);
}
signed main(){
    cin>>op>>n>>m;
    while(cin>>op>>a>>b>>c>>d){
        if(op=='L'){
            cin>>k;
            update(c+1,d+1,k);
            update(a,d+1,-k);
            update(c+1,b,-k);
            update(a,b,k);
        }
        else{
            cout<<s(c,d)-s(c,b-1)-s(a-1,d)+s(a-1,b-1)<<endl;
        }
    }
    return 0;
}

/kk

2022/12/7 10:55
加载中...