其他分享
首页 > 其他分享> > 洛谷P3397 地毯(差分)

洛谷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 }

 

标签:y2,洛谷,int,d%,差分,P3397,y1,x1,1001
来源: https://www.cnblogs.com/yhxnoerror/p/16152237.html