題目背景
此題約為noip提高組day2t1難度。
題目描述
在 n×nn\times nn×n 的格仔上有 mmm 個地毯。
給出這些地毯的資訊,問每個點被多少個地毯覆蓋。
輸入格式
第一行,兩個正整數 n,mn,mn,m。意義如題所述。
接下來 mmm 行,每行兩個座標 (x1,y1)(x_1,y_1)(x1,y1) 和 (x2,y2)(x_2,y_2)(x2,y2),代表一塊地毯,左上角是 (x1,y1)(x_1,y_1)(x1,y1),右下角是 (x2,y2)(x_2,y_2)(x2,y2)。
輸出格式
輸出 nnn 行,每行 nnn 個正整數。
第 iii 行第 jjj 列的正整數表示 (i,j)(i,j)(i,j) 這個格仔被多少個地毯覆蓋。
輸入輸出樣例
輸入 #1
5 32 2 3 3
3 3 5 5
1 2 1 4
輸出 #1
0 1 1 1 0
0 1 1 0 0
0 1 2 1 1
0 0 1 1 1
0 0 1 1 1
說明/提示
樣例解釋
覆蓋第乙個地毯後:
000 000 000 000 000
000 111 111 000 000
000 111 111 000 000
000 000 000 000 000
000 000 000 000 000
覆蓋第一、二個地毯後:
000 000 000 000 000
000 111 111 000 000
000 111 222 111 111
000 000 111 111 111
000 000 111 111 111
覆蓋所有地毯後:
000 111 111 111 000
000 111 111 000 000
000 111 222 111 111
000 000 111 111 111
000 000 111 111 111
資料範圍
對於 20%20%20% 的資料,有 n≤50n\le 50n≤50,m≤100m\le 100m≤100。
對於 100%100%100% 的資料,有 n,m≤1000n,m\le 1000n,m≤1000。
#include
#include
using
namespace std;
const
int maxn =
1e3+10;
int a[maxn]
[maxn]
;int b[maxn]
[maxn]
;int n, m;
void
operate
(int x1,
int y1,
int x2,
int y2)
}int
main()
for(
int i =
1; i <= n; i++
)for
(int i=
1; i <= n;i++
)return0;
}
P3397 地毯(二維差分)
題意 在乙個n n的地圖中,有m張地毯,每張矩形地毯的左上角和右下角已知,輸出最後整個地圖的每個點有多少張地毯覆蓋。思路 二維差分很明顯。二維字首和 二維線段樹也可以做。我們首先要用乙個陣列,記錄變化。對於 x1,y1 到 x2,y2 這一區間全部加1的話,我們需要a x1 y1 1,a x2 1 ...
洛谷 P3397 地毯
此題約為noip提高組day2t1難度。在n n的格仔上有m個地毯。給出這些地毯的資訊,問每個點被多少個地毯覆蓋。輸入格式 第一行,兩個正整數n m。意義如題所述。接下來m行,每行兩個座標 x1,y1 和 x2,y2 代表一塊地毯,左上角是 x1,y1 右下角是 x2,y2 輸出格式 輸出n行,每行...
洛谷 P3397 地毯
此題約為noip提高組day2t1難度。在 n times n 的格仔上有 m 個地毯。給出這些地毯的資訊,問每個點被多少個地毯覆蓋。第一行,兩個正整數 n,m 意義如題所述。接下來 m 行,每行兩個座標 x 1,y 1 和 x 2,y 2 代表一塊地毯,左上角是 x 1,y 1 右下角是 x 2,...