P13195 [GCJ 2016 #1C] Senate Evacuation
题目描述
参议院会议厅里起了一场小火,必须进行疏散!
会议厅里有若干参议员,每位参议员都属于 $\mathbf{N}$ 个政党中的某一个。这些政党的名称分别为英语字母表前 $\mathbf{N}$ 个大写字母。
紧急出口足够宽敞,每一步疏散时你可以选择移除一名或两名参议员。
参议院的规则规定,即使在疏散过程中,会议厅里的参议员也可以随时对任何议案进行投票!因此,疏散必须以一种方式进行,保证任何时刻都不会有某个政党拥有绝对多数。也就是说,在任何一次疏散操作之后,会议厅中都不能出现某个政党成员人数超过总人数一半的情况。
你能制定一个疏散方案吗?参议院全靠你了!
输入格式
输入的第一行包含一个整数 $\mathbf{T}$,表示测试用例数量。接下来有 $\mathbf{T}$ 组测试用例。每组测试用例包含两行。第一行是一个整数 $\mathbf{N}$,表示政党数量。第二行包含 $\mathbf{N}$ 个整数,$\mathbf{P}_1, \mathbf{P}_2, \ldots, \mathbf{P}_\mathbf{N}$,其中 $\mathbf{P}_i$ 表示以字母表第 $i$ 个字母命名的政党拥有的参议员人数。
输出格式
对于每组测试用例,输出一行 `Case #x: y`,其中 $x$ 表示测试用例编号(从 1 开始),$y$ 是疏散方案。方案应为一个以空格分隔的操作序列,每个操作为一个或两个字母,表示本次疏散中被移除的参议员所属政党。
保证至少存在一种合法的疏散方案。如果有多种方案,你可以输出任意一种。
说明/提示
**样例解释**
样例输出展示的是一组可能的答案,其他答案也可能是正确的。
在第 1 组中,A 和 B 两个政党各有两名参议员。如果每次各移除一人,始终保持完美平衡,直到全部疏散。
第 2 组操作如下:
- 初始:3 名 A,2 名 B,2 名 C。
- 疏散 AA。剩余:1 名 A,2 名 B,2 名 C。
- 疏散 BC。剩余:1 名 A,1 名 B,1 名 C。
- 疏散 C。剩余:1 名 A,1 名 B。
- 疏散 AB。全部疏散完成!
注意,不能以 BC 开始疏散,否则剩下 3 名 A,1 名 B,1 名 C,A 党将拥有绝对多数(3/5 = 60%)。
对于第 3 组,CC AB 也是一个合法答案,C C AB 也是合法的,尽管需要三步而不是两步。
**限制条件**
- $1 \leqslant \mathbf{T} \leqslant 50$。
- 在疏散开始前,没有任何政党拥有绝对多数。
- 对所有 $i$,$1 \leqslant \mathbf{P}_i \leqslant 1000$。
**小数据集(8 分,测试集 1 - 可见)**
- $2 \leqslant \mathbf{N} \leqslant 3$。
- 所有 $\mathbf{P}_i$ 之和 $\leqslant 9$。
**大数据集(10 分,测试集 2 - 隐藏)**
- $2 \leqslant \mathbf{N} \leqslant 26$。
- 所有 $\mathbf{P}_i$ 之和 $\leqslant 1000$。
翻译由 GPT4.1 完成。