luogu#P16357. [BalticOI 2026] Blocks

    ID: 16536 远端评测题 1000ms 512MiB 尝试: 0 已通过: 0 难度: 8 上传者: 标签>Special Judge构造BalticOI(波罗的海)2026

[BalticOI 2026] Blocks

题目描述

你有 nn 个木块,它们共有 kk 种不同的颜色,排成一行。木块的颜色依次为 c1,c2,,cnc_1, c_2, \dots, c_n,所有颜色均在 11kk 之间。

如果某种颜色的所有木块所处位置的平均值等于 n+12\frac {n + 1} {2},则称该颜色是平衡的。注意这个数值未必是整数。

:::align{center} :::

例如,若 77 个木块按上图方式排列,颜色 11 的平均位置为 1+4+63=113\frac {1 + 4 + 6} {3} = \frac {11} {3},颜色 22 的平均位置为 2+3+73=4\frac {2 + 3 + 7} {3} = 4,颜色 33 的平均位置为 55。因为 7+12=4\frac {7 + 1} {2} = 4,所以颜色 22 是平衡的,而颜色 1133 不是。

你能否将这些木块重新排列,使得所有颜色都平衡?

输入格式

第一行包含一个整数 tt,表示测试数据的组数。

接下来描述各组测试数据,每组数据由以下两行组成:

第一行包含两个整数 nnkk,表示木块的数量和不同颜色的种数。

第二行包含木块的颜色 c1,c2,,cnc_1, c_2, \dots, c_n。每种颜色至少出现一次。

输出格式

对于每组测试数据,如果存在解,则输出一行 YES,否则输出 NO。若解存在,再输出一行 nn 个整数,描述一种可行的排列,依次表示每个位置上木块的颜色。

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

提示

解释

在第一个样例的输出中,颜色 11 是平衡的,因为其平均位置为 1+4+5+64=4\frac {1 + 4 + 5 + 6} {4} = 4,恰好等于 n+12\frac {n + 1} {2}。类似地,颜色 22 的平均位置为 2+3+73=4\frac {2 + 3 + 7} {3} = 4。因此两种颜色都平衡。

在第二个样例中,两种可能的排列均无法使所有颜色平衡。

在第三个样例的输出中,颜色 11 的木块出现在位置 1122,其平均值为 32\frac {3} {2},因此颜色 11 是平衡的。

数据范围

  • 1t1001 \le t \le 100
  • 1kn21051 \le k \le n \le 2 \cdot 10^5
  • 1c1,c2,,cnk1 \le c_1, c_2, \dots, c_n \le k
  • 所有测试数据 nn 的总和不超过 21052 \cdot 10^5

子任务

子任务 约束条件 分值
1 n3n \le 3 44
2 n15n \le 15 1313
3 至多有一种颜色出现奇数次 1818
4 所有颜色的出现次数均相等 2323
5 k15k \le 15 1515
6 无额外限制 2727

翻译由 DeepSeek V4 Pro 完成