luogu#P16357. [BalticOI 2026] Blocks
[BalticOI 2026] Blocks
题目描述
你有 个木块,它们共有 种不同的颜色,排成一行。木块的颜色依次为 ,所有颜色均在 到 之间。
如果某种颜色的所有木块所处位置的平均值等于 ,则称该颜色是平衡的。注意这个数值未必是整数。
:::align{center}
:::
例如,若 个木块按上图方式排列,颜色 的平均位置为 ,颜色 的平均位置为 ,颜色 的平均位置为 。因为 ,所以颜色 是平衡的,而颜色 和 不是。
你能否将这些木块重新排列,使得所有颜色都平衡?
输入格式
第一行包含一个整数 ,表示测试数据的组数。
接下来描述各组测试数据,每组数据由以下两行组成:
第一行包含两个整数 和 ,表示木块的数量和不同颜色的种数。
第二行包含木块的颜色 。每种颜色至少出现一次。
输出格式
对于每组测试数据,如果存在解,则输出一行 YES,否则输出 NO。若解存在,再输出一行 个整数,描述一种可行的排列,依次表示每个位置上木块的颜色。
3
7 2
1 1 1 1 2 2 2
2 2
1 2
2 1
1 1
YES
1 2 2 1 1 1 2
NO
YES
1 1
提示
解释
在第一个样例的输出中,颜色 是平衡的,因为其平均位置为 ,恰好等于 。类似地,颜色 的平均位置为 。因此两种颜色都平衡。
在第二个样例中,两种可能的排列均无法使所有颜色平衡。
在第三个样例的输出中,颜色 的木块出现在位置 和 ,其平均值为 ,因此颜色 是平衡的。
数据范围
- 所有测试数据 的总和不超过
子任务
| 子任务 | 约束条件 | 分值 |
|---|---|---|
| 1 | ||
| 2 | ||
| 3 | 至多有一种颜色出现奇数次 | |
| 4 | 所有颜色的出现次数均相等 | |
| 5 | ||
| 6 | 无额外限制 |
翻译由 DeepSeek V4 Pro 完成