QOJ.ac

QOJ

Limite de temps : 5.0 s Limite de mémoire : 256 MB Points totaux : 100

#9388. 第 K 个主教覆盖

Statistiques

小达莎正在学习下国际象棋。最近她遇到了这样一个问题:覆盖整个棋盘需要多少个象?如果每个格子都被覆盖,那么棋盘就被覆盖了。如果一个格子上站着一个象,或者至少有一个象攻击这个格子,那么这个格子就被覆盖了。回想一下,如果一个象位于某处,且与某个格子在同一条对角线上,并且该象与该格子之间的对角线上没有其他棋子,那么这个象就攻击该格子。

对于标准的 $8 \times 8$ 棋盘,这个问题对达莎来说太难了,所以她先在 $1 \times 1$、$2 \times 2$、$3 \times 3$ 等方形棋盘上解决了它。最终,她也成功地在 $8 \times 8$ 的棋盘上放置了象。然后她查看了提供的答案,令人惊讶的是,象的数量是对的,但题目作者放置它们的方式与她完全不同。这个问题是否还有其他解法?达莎拿起笔和纸,坐下来思考。

请解决达莎问题的推广版本。给定 $n$ 和 $k$,输出用最少数量的象覆盖 $n \times n$ 方形棋盘的第 $k$ 种字典序覆盖方案。

象的放置方式按从上到下的行进行比较,在每一行中,格子按从左到右的顺序考虑。如果在这种顺序下找到两个放置方案不同的第一个格子,那么在该格子上放置了象的方案在字典序上小于另一个方案。

输入格式

输入的第一行包含两个整数 $n$ 和 $k$:棋盘的大小和所需覆盖方案的编号($1 \le n \le 50$)。覆盖方案从 1 开始编号。保证第 $k$ 种覆盖方案存在。

输出格式

输出恰好 $n$ 行,每行包含恰好 $n$ 个字符:用最少数量的象覆盖 $n \times n$ 棋盘的第 $k$ 种字典序方案。放置象的格子用 “*”(星号,ASCII 码 42)表示,空格子用 “.”(点,ASCII 码 46)表示。

样例

输入 1

2 3

输出 1

.*
.*

输入 2

3 2

输出 2

.*.
.**
...

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.