CF771B Bear and Different Names
题目描述
在军队中,组建一支能在战场上高效作战的士兵小队并不容易。沟通至关重要,因此不能有两个士兵同名(如果有两个名为 Bob 的士兵,收到“Bob 负责侦查”这样的命令会发生什么?)。
一支士兵小队只有当队内所有人的名字都不相同时才算“高效”。举例来说,队伍 (John, Bob, Limak) 是高效的,而队伍 (Gary, Bob, Gary) 和 (Alice, Alice) 都不是高效的。
你作为间谍潜入了敌军营地。你注意到有 $n$ 名士兵排成一列,编号为 $1$ 到 $n$。将军想从这些士兵中选择连续的 $k$ 名组成小队。对于每一组连续的 $k$ 名士兵,将军都记录了这组是否是高效小队。
你成功偷到了将军的笔记,其中包含了 $n-k+1$ 个字符串 $s_{1}, s_{2}, ..., s_{n-k+1}$,每个字符串为 "YES" 或 "NO"。
- 字符串 $s_{1}$ 描述的是 $1$ 到 $k$ 号士兵这一组是否高效(若是高效则为"YES",否则为"NO")。
- 字符串 $s_{2}$ 描述的是第 $2$ 到第 $k+1$ 号士兵组成的小队。
- 以此类推,直到字符串 $s_{n-k+1}$,描述的是第 $n-k+1$ 到第 $n$ 号士兵组成的小队。
你的任务是找出可能的 $n$ 个士兵的名字,使所有的小队是否高效与将军笔记完全一致。每个士兵的名字应为 $1$ 到 $10$ 个英文字符组成,第一个字母为大写英文字母,其余字母为小写。名字不需要是真实存在的,可以为 "Xyzzzdj" 或 "T" 等。
请找出并输出任意一个符合条件的方案。可以证明,至少存在一个解。
输入格式
第一行输入两个整数 $n$ 和 $k$($2 \le k \le n \le 50$),分别表示士兵人数和小队规模。
第二行输入 $n-k+1$ 个字符串 $s_{1},s_{2},...,s_{n-k+1}$。字符串 $s_{i}$ 为 "YES" 表示第 $i$ 到 $i+k-1$ 号士兵组成的小队是高效的,否则为 "NO"。
输出格式
输出一行共 $n$ 个用空格分隔的字符串,表示士兵的可能名字,按顺序排列。每个名字为首字母大写,其余为小写,仅含英文字母,长度为 $1$ 到 $10$。
如果有多组满足条件的答案,输出任意一组都可以。
说明/提示
在第一个样例中,有 $8$ 名士兵。对于每连续 $3$ 人的小队,都已知他们是否高效。我们来分析示例输出:
- 前 $3$ 个人(即 Adam, Bob, Bob)不是高效的小队,因为有两个 Bob。确实,$s_1$ 为 "NO"。
- $2$ 到 $4$ 号士兵组(Bob, Bob, Cpqepqwer)也不是高效小队,$s_2$ 为 "NO"。
- $3$ 到 $5$ 号士兵组(Bob, Cpqepqwer, Limak)是高效小队,$s_3$ 为 "YES"。
- ……
- $6$ 到 $8$ 号士兵组(Adam, Bob, Adam)不是高效小队,$s_6$ 为 "NO"。
由 ChatGPT 5 翻译