2 条题解

  • 1
    @ 2025-9-14 15:23:40

    分享一个c++题解

    #include<bits/stdc++.h>
    using namespace std;
    #define int long long
    int a[1010][1010],b[1010][1010];//a数组存储原来数字 b数组用来存每行的前缀和
    signed main(){
     int n,m,q;
     cin>>n>>m>>q;
     for(int i=1;i<=n;i++){
        for(int j=1;j<=m;j++){
            cin>>a[i][j];
         if(j!=1)   b[i][j]+=b[i][j-1]+a[i][j];//前缀和
         else {
            b[i][j]=a[i][j];//第一列就等于原本的
         }
        }
     }
     for(int k=1;k<=q;k++){
        int x1,y1,x2,y2,ans=0;
        cin>>x1>>y1>>x2>>y2;
        //cout<<b[x1][y2]<<" "<<b[x1][y1]<<" " <<b[x2][y2]<<" "<<b[x2][y1]<<endl;
        for(int i=x1;i<=x2;i++){
            ans+=b[i][y2]-b[i][y1-1];
        }
        cout<<ans<<endl;
     }
    
    }
    

    信息

    ID
    42
    时间
    1000ms
    内存
    256MiB
    难度
    2
    标签
    递交数
    55
    已通过
    33
    上传者