#P1083. 【UR #34】爆裂魔法
【UR #34】爆裂魔法
环绕于吾身的戒律之炉内,深渊之血肉争鸣咆哮,此刻,融于真红波动之中吧!贯穿天地吧,Explosion!

红魔法师 Megumin 没钱了,于是找了一个构造地形的工作,但是规划图实在是太复杂了,于是她来请求你的帮助。
你现在拥有一个 $N$ 行 $N$ 列的初始为全 $0$ 的二维数组 $h$ 表示每块区域的高度,Megumin 会给你一个 $N$ 行 $N$ 列的 01 数组 $A$ 作为规划图,为了方便观察,我们给出一个新数组 $a$ 以 . 代替 0,# 代替 1。
你可以规划以下爆裂魔法操作若干次:
- 选择任意 $X,Y \in \mathbb{Z}$,然后让所有 $x \in \left[ X,X+N-1 \right] \cap \left[ 1,N \right] \cap \mathbb{Z},y \in \left[ Y,Y+N-1 \right] \cap \left[ 1,N \right] \cap \mathbb{Z}$ 的 $h_{x,y}$ 减一,该操作记为操作 $(X,Y)$。
设 $L=\max_{A_{x,y}=1} h_{x,y}$(若不存在 $A_{x,y}=1$ 则为 $-10^9$),$R=\min_{A_{x,y}=0} h_{x,y}$(若不存在 $A_{x,y}=0$ 则为 $10^9$),你需要判断能否通过以上操作使得 $L \lt R$,也即使得任意 # 位置的高度都小于任意 . 位置的高度,并构造方案。
特别地,由于 Megumin 每天只能用一次爆裂魔法,而工作期限为 $K$ 天,所以你还要让你的方案满足操作次数 $\le K$,由于工作发布者很善良,数据保证如果有解则至少存在一组操作数 $\le K$ 的解。
输入格式
本题单个测试点有多组测试数据。
第一行一个正整数 $T$ 表示数据组数,接下来,对于每组数据有:
第一行两个正整数 $N,K$ 分别表示网格大小以及操作次数的最大值。
接下来 $N$ 行每行 $N$ 个字符,第 $i$ 行第 $j$ 个字符表示 $a_{i,j}$。
输出格式
对于每组数据,首先输出一行一个字符串 Yes 或 No。
Yes 表示能够通过操作满足题目的条件,No 表示不能通过操作满足题目条件。
如果输出 Yes,后面还要输出你的方案,具体如下:
第一行输出一行一个整数 $k$ 表示有 $k$ 个操作,你需要保证 $k \le K$,否则该测试点得零分。
接下来 $k$ 行,每行两个整数 $X,Y$ 表示进行一次操作 $(X,Y)$,你需要保证 $0 \le |X|,|Y| \le 10^9$。
数据保证如果有解则至少存在一组操作数 $\le K$ 的解。
4
1 2
.
1 2
#
2 8
#.
.#
3 36
...
.#.
...
Yes
0
Yes
0
Yes
2
0 0
2 2
Yes
4
-114514 -1919810
0 0
0 2
2 0
第四组数据中,$h_{2,2}=-3,\min_{A_{x,y}=0} h_{x,y}=-2$ 有 $-3<-2$,满足条件。
数据范围
本题采用捆绑测试。
设 $\sum N$ 为单个测试点内所有 $N$ 的和。
对于 $100\%$ 的数据,保证:
- $1 \le N \le 100,1 \le \sum N,T \le 500,2 \cdot N^2 \le K $。
- $A_{i,j} \in \{0,1\}$。
| 子任务编号 | 分值 | $N \le$ | $\sum N \le$ | $K=$ | 特殊性质 |
|---|---|---|---|---|---|
| $1$ | $20$ | $3$ | $500$ | $400$ | 无 |
| $2$ | $15$ | $100$ | $2 \cdot N^2$ | A | |
| $3$ | $15$ | B | |||
| $4$ | $20$ | $4 \cdot N^2$ | 无 | ||
| $5$ | $30$ | $2 \cdot N^2$ |
特殊性质 A:只存在一个位置 $(x,y)$ 满足 $A_{x,y}=1$。
特殊性质 B:只存在一个位置 $(x,y)$ 满足 $A_{x,y}=0$。
时间限制:$\texttt{1s}$
空间限制:$\texttt{512MB}$