QOJ.ac

QOJ

Límite de tiempo: 2 s Límite de memoria: 1024 MB Puntuación total: 100

#23960. 遮蔽膠帶

Estadísticas

題目描述

JOI 君正在使用畫紙與遮蔽膠帶玩塗色遊戲。

畫紙是長方形的,上面畫有縱 $H$ 行、橫 $W$ 列的方格。從上往下第 $i$ 行($1 \le i \le H$)、從左往右第 $j$ 列($1 \le j \le W$)的格子稱為格子 $(i, j)$。

每個格子都設定有 $1$ 種顏色。顏色以整數表示,初始時所有格子的顏色皆為 $0$。

JOI 君使用這張畫紙與遮蔽膠帶進行 $Q$ 次操作。第 $k$ 次($1 \le k \le Q$)操作根據整數 $q_k$ 的值按如下方式進行:

  • 當 $q_k = 1$ 時,該操作以整數 $x_k, y_k, c_k$ 表示。對於格子 $(x_k, y_k)$、$(x_k + 1, y_k)$、$(x_k, y_k + 1)$、$(x_k + 1, y_k + 1)$ 中的每一個,若該格子未被遮蔽膠帶覆蓋,則將該格子的顏色更改為 $c_k$;若該格子已被遮蔽膠帶覆蓋,則對該格子不做任何操作。
  • 當 $q_k = 2$ 時,該操作以整數 $x_k, y_k$ 表示。用遮蔽膠帶覆蓋格子 $(x_k, y_k)$、$(x_k + 1, y_k)$、$(x_k, y_k + 1)$、$(x_k + 1, y_k + 1)$。

在全部 $Q$ 次操作結束後,撕下所有的遮蔽膠帶。注意,當撕下某個格子上的遮蔽膠帶時,該格子的顏色會恢復為它被遮蔽膠帶覆蓋前那一刻的顏色。

給定 $Q$ 次操作的資訊,請撰寫一個程式,求出最終畫紙上所有格子的顏色。

資料範圍

  • $2 \le H \le 500$。
  • $2 \le W \le 500$。
  • $1 \le Q \le 200\,000$。
  • $q_k$ 為 $1$ 或 $2$ 之一($1 \le k \le Q$)。
  • 當 $q_k = 1$ 時,$1 \le x_k \le H - 1$,$1 \le y_k \le W - 1$,$1 \le c_k \le 10^9$($1 \le k \le Q$)。
  • 當 $q_k = 2$ 時,$1 \le x_k \le H - 1$,$1 \le y_k \le W - 1$($1 \le k \le Q$)。
  • 輸入的所有值皆為整數。

子任務

  1. ($32$ 分)$H = 2$,$W = 2$,$q_k = 1$($1 \le k \le Q$)。
  2. ($32$ 分)$q_k = 1$($1 \le k \le Q$)。
  3. ($36$ 分)無額外限制。

輸入格式

輸入按以下格式給出:

$$ \begin{aligned} &H\ W\ Q \\ &(\text{Query } 1) \\ &(\text{Query } 2) \\ &\vdots \\ &(\text{Query } Q) \end{aligned} $$

每個 $(\text{Query } k)$($1 \le k \le Q$)包含若干個以空格分隔的整數。其中第 $1$ 個整數為 $q_k$,該行的內容為以下之一:

  • 當 $q_k = 1$ 時,該行隨後有 $3$ 個以空格分隔的整數 $x_k, y_k, c_k$。
  • 當 $q_k = 2$ 時,該行隨後有 $2$ 個以空格分隔的整數 $x_k, y_k$。

輸出格式

輸出 $H$ 行,表示最終畫紙上所有格子的顏色。在第 $i$ 行($1 \le i \le H$)輸出 $W$ 個以空格分隔的整數,其中第 $j$ 個($1 \le j \le W$)輸出的整數為格子 $(i, j)$ 的顏色。

範例

範例輸入 1

5 5 4
1 2 2 1
2 1 2
2 3 3
1 1 3 5

範例輸出 1

0 0 0 5 0
0 1 1 5 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0

按順序觀察這 $4$ 次操作。

對於第 $1$ 次操作,$q_1 = 1$。由於格子 $(2, 2)$、$(2, 3)$、$(3, 2)$、$(3, 3)$ 皆未被遮蔽膠帶覆蓋,因此將它們的顏色更改為 $1$。

此時,畫紙如下所示:

0 0 0 0 0
0 1 1 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0

對於第 $2$ 次操作,$q_2 = 2$。用遮蔽膠帶覆蓋格子 $(1, 2)$、$(1, 3)$、$(2, 2)$、$(2, 3)$。

此時,畫紙如下所示。注意,在被遮蔽膠帶覆蓋的格子的顏色整數右側標有 *:

0 0* 0* 0 0
0 1* 1* 0 0
0 1 1 0 0
0 0 0 0 0
0 0 0 0 0

對於第 $3$ 次操作,$q_3 = 2$。用遮蔽膠帶覆蓋格子 $(3, 3)$、$(3, 4)$、$(4, 3)$、$(4, 4)$。

此時,畫紙如下所示:

0 0* 0* 0 0
0 1* 1* 0 0
0 1 1* 0* 0
0 0 0* 0* 0
0 0 0 0 0

對於第 $4$ 次操作,$q_4 = 1$。由於格子 $(1, 4)$、$(2, 4)$ 未被遮蔽膠帶覆蓋,因此將它們的顏色更改為 $5$。由於格子 $(1, 3)$、$(2, 3)$ 已被遮蔽膠帶覆蓋,因此不做任何操作。

此時,畫紙如下所示:

0 0* 0* 5 0
0 1* 1* 5 0
0 1 1* 0* 0
0 0 0* 0* 0
0 0 0 0 0

因此,最終畫紙上所有格子的顏色如範例輸出所示。

本範例滿足子任務 $3$ 的限制。


範例輸入 2

5 5 3
1 1 1 2
1 3 3 3
1 2 4 2

範例輸出 2

2 2 0 0 0
2 2 0 2 2
0 0 3 2 2
0 0 3 3 0
0 0 0 0 0

本範例滿足子任務 $2, 3$ 的限制。


範例輸入 3

10 10 10
2 5 7
2 5 6
1 5 6 1
1 9 2 1
2 1 1
1 2 4 2
2 3 2
1 2 2 3
1 9 9 2
1 8 8 1

範例輸出 3

0 0 0 0 0 0 0 0 0 0
0 0 3 2 2 0 0 0 0 0
0 0 0 2 2 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 0 0 0
0 0 0 0 0 0 0 1 1 0
0 1 1 0 0 0 0 1 1 2
0 1 1 0 0 0 0 0 2 2

本範例滿足子任務 $3$ 的限制。

Discussions

About Discussions

The discussion section is only for posting: General Discussions (problem-solving strategies, alternative approaches), and Off-topic conversations.

This is NOT for reporting issues! If you want to report bugs or errors, please use the Issues section below.

Open Discussions 0
No discussions in this category.

Issues

About Issues

If you find any issues with the problem (statement, scoring, time/memory limits, test cases, etc.), you may submit an issue here. A problem moderator will review your issue.

Guidelines:

  1. This is not a place to publish discussions, editorials, or requests to debug your code. Issues are only visible to you and problem moderators.
  2. Do not submit duplicated issues.
  3. Issues must be filed in English or Chinese only.
Active Issues 0
No issues in this category.
Closed/Resolved Issues 0
No issues in this category.