P3397 地毯 差分

2021-10-24 11:18:23 字數 1662 閱讀 4475

題目背景

此題約為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,...