CF1717B Madoka and Underground Competitions

题目描述

Madoka 决定参加一个地下的体育编程比赛。比赛中恰好有一道题目: 一个大小为 $n \times n$ 的方阵,其中 $n$ 是 $k$ 的倍数。我们称这个方阵是“好”的,如果它只包含字符 '.' 和 'X',并且对于任意大小为 $1 \times k$ 或 $k \times 1$ 的子矩阵,至少有一个格子包含字符 'X'。换句话说,在任意连续的 $k$ 个竖直或水平格子中,至少有一个格子包含字符 'X'。 请输出任意一个“好”的方阵,并且要求字符 'X' 的数量尽可能少,同时第 $r$ 行第 $c$ 列的格子必须写有字符 'X'。行从上到下编号为 $1$ 到 $n$,列从左到右编号为 $1$ 到 $n$。

输入格式

输入包含多组测试数据。第一行包含一个整数 $t$($1 \le t \le 100$),表示测试数据的组数。接下来每组测试数据占一行,每行包含四个整数 $n$、$k$、$r$、$c$($1 \le n \le 500, 1 \le k \le n, 1 \le r, c \le n$),分别表示方阵的大小 $n$,整数 $k$,以及必须包含 'X' 的格子的行列坐标 $r$ 和 $c$。保证 $n$ 是 $k$ 的倍数。 保证所有测试数据中 $n$ 的总和不超过 $500$。

输出格式

对于每组测试数据,输出 $n$ 行,每行包含 $n$ 个字符 '.' 或 'X',表示满足要求的方阵。如果有多种答案,可以输出任意一种。

说明/提示

我们来分析第一个测试样例。 以下方阵可以作为正确答案输出: X....X.X. 或 ..XX...X. 可以证明,答案中 'X' 的数量不能少于 $3$。注意,下面这个方阵是不合法的,因为第 $(3, 2)$ 个格子没有包含字符 'X': X...X...X 在第二个测试样例中,唯一正确的方阵是: XXXX 每个 $1 \times 1$ 的子矩阵都必须包含 'X',因此方阵中所有格子都必须是 'X'。 由 ChatGPT 4.1 翻译