洛谷P3397 地毯(差分)

二维平面上的差分,我们可以对每行处理。

比如我们要把(2,2)(5,5)之间的矩形加上1,可以这样处理。

0 0 0 0 0 0
0 +1 0 0 0 -1
0 +1 0 0 0 -1
0 +1 0 0 0 -1
0 +1 0 0 0 -1
0 0 0 0 0 0

那么这道题就简单了。

复制代码
 1 #include<bits/stdc++.h>
 2 using namespace std;
 3 int n,m,a[1001][1001],c[1001][1001];
 4 
 5 int main(){
 6     scanf("%d%d",&n,&m);
 7     while(m--){
 8         int x1,x2,y1,y2;
 9         scanf("%d%d%d%d",&x1,&y1,&x2,&y2);
10         for(int i=x1;i<=x2;i++){
11             c[i][y1]+=1;
12             c[i][y2+1]-=1;
13         }
14     }
15     for(int i=1;i<=n;i++)
16         for(int j=1;j<=n;j++)
17             a[i][j]=a[i][j-1]+c[i][j];
18     for(int i=1;i<=n;i++){
19         for(int j=1;j<=n;j++){
20             cout<<a[i][j]<<" ";
21         }
22         cout<<endl;
23     }
24 }
复制代码

 



如果您觉得阅读本文对您有帮助,请点一下“推荐”按钮,您的“推荐”将是我最大的写作动力!欢迎各位转载,但是未经作者本人同意,转载文章之后必须在文章页面明显位置给出作者和原文连接,否则保留追究法律责任的权利。
posted @   YHXo  阅读(16)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】
点击右上角即可分享
微信分享提示