#P16066. [2022国家队训练南京站]菱形覆盖
[2022国家队训练南京站]菱形覆盖
题目描述
给定一个边长为 的正三角形。它被划分成 个边长为 的小正三角形,其中:
- 正着的小三角形有 个;
- 倒着的小三角形有 个。
现在有 个正着的小三角形被切掉,因此剩下:
- 个正着的小三角形;
- 个倒着的小三角形。
你需要判断剩余区域能否被 个边长为 、内角为 和 的菱形完全覆盖。如果可以,输出任意一种覆盖方案。

边长为 4 的正三角形,以及三种菱形类型
上图左侧为边长为 的正三角形;右侧为三种不同的菱形,编号从左到右分别为 。

上图展示了一种 的例子。
输入格式
第一行一个正整数 ,表示大正三角形的边长。
接下来 行描述哪些正着的小三角形被切掉。第 行()是一个长度为 的 01 字符串,其中第 个字符含义如下:
0:第 行第 个正着的小三角形被切掉;1:该正着的小三角形保留。
输出格式
如果不存在合法覆盖方案,输出:
Impossible!
否则输出任意一组合法方案。方案共包含 行,第 行为一个长度为 的字符串;第 行第 个字符表示第 行第 个正着的小三角形的状态:
-:该小三角形被切掉;1:该小三角形被第一种菱形覆盖;2:该小三角形被第二种菱形覆盖;3:该小三角形被第三种菱形覆盖。
样例
输入
4
0
11
010
1101
输出
-
21
-3-
33-1
数据范围与子任务
保证:
| 子任务 | 分值 | 限制 |
|---|---|---|
| 1 | 5 | |
| 2 | 10 | |
| 3 | 35 | |
| 4 | 5 | 保证每一行恰好有一个正着的小三角形被切掉 |
| 5 | 15 | 保证存在至少一组解 |
| 6 | 30 | 无特殊限制 |