编程题:模拟
矩阵是一个矩形的字母表。方阵是行数和列数相等的矩阵。如果一个方阵$$M$$的字母相对于主对角线对称(对于所有的$$i$$和$$j$$对,$$Mij=Mji$$),则称其为对称矩阵$$M$$。
下面是两个对称矩阵和一个非对称矩阵:
| 两个对称矩阵 | 两个不对称矩阵
| -------- | -------- |
| AAB AAA | ABCD AAB |
| ACC ABA | ABCD ACA |
| BCC AAA | ABCD DAA |
| |ABCD
给定一个可用字母的集合,您将输出字典最小对称矩阵中的一个子集,该矩阵可以使用所有字母组成。
如果不存在这样的矩阵,则输出“不可能”。
为了确定矩阵A是否比矩阵B小,考虑行中的主要顺序(如连接所有行以形成长字符串)。如果矩阵不同的第一个元素在A中较小,那么A在词典上比B小。
### 输入格式:
第一行输入包含两个整数N(1≤N≤30000)和K(1≤K≤26). N是矩阵的维数,K是将出现的不同字母数。
以下K行中的每一行都包含一个大写字母和一个正整数,用空格分隔。
整数表示要使用多少个对应的字母。例如,如果一行显示“A 3”,那么字母A必须在输出矩阵中出现三次。
字母总数正好是N2。任何字母在输入中都不会出现多次。
下一行包含一个整数P(1≤P≤50),必须输出的列数。
最后一行包含P个整数,即必须输出的列的索引。指数将在1和N之间(含),按递增顺序给出,且无重复项。
### 输出格式:
如果可以从给定的字母集合组成对称矩阵,则在N行上输出所需的列,每个列包含P个字符,不带空格。否则,输出“不可能”
### 输入样例1:
in
3 3
A 3
B 2
C 4
3
1 2 3
### 输出样例1:
out
AAB
ACC
BCC
### 输入样例2:
in
4 4
A 4
B 4
C 4
D 4
4
1 2 3 4
### 输出样例2:
out
AABB
AACC
BCDD
BCDD
### 输入样例3:
in
4 5
E 4
A 3
B 3
C 3
D 3
2
2 4
### 输出样例3:
out
AC
BE
DE
ED
### 输入样例4:
in
4 6
F 1
E 3
A 3
B 3
C 3
D 3
4
1 2 3 4
### 输出样例4:
out
IMPOSSIBLE
答案:若无答案欢迎评论
下面是两个对称矩阵和一个非对称矩阵:
| 两个对称矩阵 | 两个不对称矩阵
| -------- | -------- |
| AAB AAA | ABCD AAB |
| ACC ABA | ABCD ACA |
| BCC AAA | ABCD DAA |
| |ABCD
给定一个可用字母的集合,您将输出字典最小对称矩阵中的一个子集,该矩阵可以使用所有字母组成。
如果不存在这样的矩阵,则输出“不可能”。
为了确定矩阵A是否比矩阵B小,考虑行中的主要顺序(如连接所有行以形成长字符串)。如果矩阵不同的第一个元素在A中较小,那么A在词典上比B小。
### 输入格式:
第一行输入包含两个整数N(1≤N≤30000)和K(1≤K≤26). N是矩阵的维数,K是将出现的不同字母数。
以下K行中的每一行都包含一个大写字母和一个正整数,用空格分隔。
整数表示要使用多少个对应的字母。例如,如果一行显示“A 3”,那么字母A必须在输出矩阵中出现三次。
字母总数正好是N2。任何字母在输入中都不会出现多次。
下一行包含一个整数P(1≤P≤50),必须输出的列数。
最后一行包含P个整数,即必须输出的列的索引。指数将在1和N之间(含),按递增顺序给出,且无重复项。
### 输出格式:
如果可以从给定的字母集合组成对称矩阵,则在N行上输出所需的列,每个列包含P个字符,不带空格。否则,输出“不可能”
### 输入样例1:
in
3 3
A 3
B 2
C 4
3
1 2 3
### 输出样例1:
out
AAB
ACC
BCC
### 输入样例2:
in
4 4
A 4
B 4
C 4
D 4
4
1 2 3 4
### 输出样例2:
out
AABB
AACC
BCDD
BCDD
### 输入样例3:
in
4 5
E 4
A 3
B 3
C 3
D 3
2
2 4
### 输出样例3:
out
AC
BE
DE
ED
### 输入样例4:
in
4 6
F 1
E 3
A 3
B 3
C 3
D 3
4
1 2 3 4
### 输出样例4:
out
IMPOSSIBLE
答案:若无答案欢迎评论