2 条题解

  • 0
    @ 2025-10-8 16:53:34

    A10 差分 二维差分
    A10 差分 二维差分(内网)

    #include<bits/stdc++.h>
    using namespace std;
    const int N=1010; 
    int d[N][N],a[N][N];
    int main()
    {
        int n,m;scanf("%d%d",&n,&m);
        memset(d,0,sizeof(d));
        for(int i=1,xa,ya,xb,yb;i<=m;++i)
        {
            scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
            ++d[xa][ya];
            --d[xb+1][ya];
            --d[xa][yb+1];
            ++d[xb+1][yb+1];
        }
        memset(a,0,sizeof(a));
        for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)a[i][j]=d[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
        for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)printf("%d%c",a[i][j],j==n?'\n':' ');
        return 0;
    }
    
    • 0
      @ 2025-10-8 16:53:24

      A10 差分 二维差分(视频的方法不够优,超时60分)

      A10 差分 二维差分(内网)

      #include<bits/stdc++.h>
      using namespace std;
      const int N=1010; 
      int d[N][N],a[N][N];
      int main()
      {
          int n,m;scanf("%d%d",&n,&m);
          memset(d,0,sizeof(d));
          for(int i=1,xa,ya,xb,yb;i<=m;++i)
          {
              scanf("%d%d%d%d",&xa,&ya,&xb,&yb);
              ++d[xa][ya];
              --d[xb+1][ya];
              --d[xa][yb+1];
              ++d[xb+1][yb+1];
          }
          memset(a,0,sizeof(a));
          for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)a[i][j]=d[i][j]+a[i-1][j]+a[i][j-1]-a[i-1][j-1];
          for(int i=1;i<=n;++i)for(int j=1;j<=n;++j)printf("%d%c",a[i][j],j==n?'\n':' ');
          return 0;
      }
      • 1

      A10*【二维差分】地毯[数据加强版]

      信息

      ID
      750
      时间
      300ms
      内存
      512MiB
      难度
      7
      标签
      递交数
      257
      已通过
      54
      上传者