AT_nupc2024_d Painting

题目描述

给定一个 $H$ 行 $W$ 列的网格,初始时所有格子都是无色的。网格中自上而下第 $i$ 行、自左而右第 $j$ 列的格子记为 $(i,j)$。此外,还存在 $N$ 种非黑色的颜色,编号为 $1,\dots,N$。 现有 $Q$ 个操作,依次处理,并输出最后每个格子的颜色。操作有以下三种形式之一: - `1 i l r`:将 $(i,l),(i,l+1),\dots,(i,r)$ 这些格子涂成黑色; - `2 j u d`:将 $(u,j),(u+1,j),\dots,(d,j)$ 这些格子涂成黑色; - `3 i j c`:将与格子 $(i,j)$ 连通的所有格子全部染成颜色 $c$。 这里,两个格子 $S,T$ 被称为连通,当且仅当 $S,T$ 都不是黑色,且可以经由上下左右相邻的、非黑色格子一步步移动,从 $S$ 到达 $T$。

输入格式

输入以如下格式从标准输入中给出: > $H\ W\ N\ Q$ > $\mathrm{query}_1$ > $\mathrm{query}_2$ > $\vdots$ > $\mathrm{query}_Q$ 每个操作皆为下述三种形式之一: > $1\ i\ l\ r$ > $2\ j\ u\ d$ > $3\ i\ j\ c$

输出格式

所有操作处理完毕后,将网格每个格子的状态按以下格式输出: > $c_{1,1}\ c_{1,2}\ \dots\ c_{1,W}$ > $c_{2,1}\ c_{2,2}\ \dots\ c_{2,W}$ > $\vdots$ > $c_{H,1}\ c_{H,2}\ \dots\ c_{H,W}$ 其中 $c_{i,j}$ 表示格子 $(i,j)$ 的颜色。若格子为黑色,则 $c_{i,j}=0$;若为无色,则 $c_{i,j}=-1$;否则为对应的颜色编号。

说明/提示

### 样例解释 1 每个操作处理后的网格状态如下图所示: ![](https://cdn.luogu.com.cn/upload/vjudge_pic/AT_nupc2024_d/767a91d320eb37bb508cab25eee47a5e8f022a62c09eb271ffb7a9b904839aa5.svg) 第 1 条操作时,所有格子连通,因此全部被染成颜色 1。第 2 条操作时,第 2 行全部格子染成黑色。第 3 条操作时,第 1 行全部格子染成颜色 2。 ### 数据范围 - $1\leq H, W$ - $1 \leq H\times W \leq 2\times10^5$ - $1 \leq N, Q \leq 2\times10^5$ - 第 1 类操作中,$1\leq i\leq H,\ 1\leq l\leq r\leq W$ - 第 2 类操作中,$1\leq j\leq W,\ 1\leq u\leq d\leq H$ - 第 3 类操作中,$1\leq i\leq H,\ 1\leq j\leq W,\ 1\leq c\leq N$ - 对于第 3 类操作,处理前 $(i,j)$ 不是黑色 - 所有输入均为整数。 由 ChatGPT 5 翻译