2 条题解

  • 0
    @ 2025-10-8 16:50:12
    #include<bits/stdc++.h> 
    using namespace std;
    typedef long long LL;
    const int N=(1<<12)+10;
    int n,m;LL s[N][N];
    void add(int x,int y,int k)
    {
        for(int i=x;i<=n;i+=i&-i)for(int j=y;j<=m;j+=j&-j)s[i][j]+=k;
    }
    LL getsum(int x,int y)
    {
        LL res=0;
        for(int i=x;i>=1;i-=i&-i)for(int j=y;j>=1;j-=j&-j)res+=s[i][j];
        return res;
    }
    int main()
    {
        scanf("%d%d",&n,&m);
        memset(s,0,sizeof(s));
        int op,k,x,y,a,b,c,d;
    	while(scanf("%d",&op)!=EOF)
        {
            
            if(op==1)
    		{
    			scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
    			add(a,b,k);
    			add(a,d+1,-k);
    			add(c+1,b,-k);
    			add(c+1,d+1,k);
    		}
            else
    		{
    			scanf("%d%d",&x,&y);
    			printf("%lld\n",getsum(x,y));
    		}
        }
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:50:05
      #include<bits/stdc++.h> 
      using namespace std;
      typedef long long LL;
      const int N=(1<<12)+10;
      int n,m;LL s[N][N];
      void add(int x,int y,int k)
      {
          for(int i=x;i<=n;i+=i&-i)for(int j=y;j<=m;j+=j&-j)s[i][j]+=k;
      }
      LL getsum(int x,int y)
      {
          LL res=0;
          for(int i=x;i>=1;i-=i&-i)for(int j=y;j>=1;j-=j&-j)res+=s[i][j];
          return res;
      }
      int main()
      {
          scanf("%d%d",&n,&m);
          memset(s,0,sizeof(s));
          int op,k,x,y,a,b,c,d;
      	while(scanf("%d",&op)!=EOF)
          {
              
              if(op==1)
      		{
      			scanf("%d%d%d%d%d",&a,&b,&c,&d,&k);
      			add(a,b,k);
      			add(a,d+1,-k);
      			add(c+1,b,-k);
      			add(c+1,d+1,k);
      		}
              else
      		{
      			scanf("%d%d",&x,&y);
      			printf("%lld\n",getsum(x,y));
      		}
          }
          return 0;
      }
      • 1

      二维树状数组 2:区间修改,单点查询

      信息

      ID
      395
      时间
      1000ms
      内存
      256MiB
      难度
      3
      标签
      (无)
      递交数
      71
      已通过
      39
      上传者