P3397 地毯

差分本质-> 区间加减 中 各个元素值的变化 O(n)即可·全部实现操作

#include<cstdio>
int f[1010][1010]={0},sum[1010][1010];
int main()
{
    int n,m,x1,y1,x2,y2;
    scanf("%d%d",&n,&m);
    for (int i=1;i<=m;i++) {
        scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
        for (int j=x1;j<=x2;j++) { f[j][y1]+=1;f[j][y2+1]-=1; }
    }
    for (int i=1;i<=n;i++) {
      int exsum=0;
        for (int j=1;j<=n;j++) {
            exsum+=f[i][j];
            sum[i][j]=exsum;
        }
    }
    for (int i=1;i<=n;i++) {
        for (int j=1;j<=n;j++) printf("%d ",sum[i][j]);
        printf("\n");
    }
    return 0;
}
View Code
 

 

 
 
 
posted @ 2023-07-15 09:16  JMXZ  阅读(4)  评论(0)    收藏  举报