#HK5236. 「UOI 2020 Stage 4 Day1」猜颜色

「UOI 2020 Stage 4 Day1」猜颜色

题目描述

题目译自 Ukrainian Olympiads in Informatics 2020 Stage 4 Day1 T3. Вгадайте колір

给定 nn 个小球,编号从 11nn。每个小球都有一个颜色,但你不知道具体颜色。总共有 kk 种不同的颜色。

你可以通过一次查询查看一个小球,并得知你已经查看过的同色小球的数量(包括当前这个小球)。但在这种查询中,你无法直接得知小球的颜色。你总共可以进行不超过 cc 次这样的查询。

你的目标是找到一个长度为 nn 的数组 colorscolors,其中每个元素是 11kk 之间的整数,且 colors[i]=colors[j]colors[i] = colors[j] 当且仅当编号为 iijj 的小球颜色相同。

交互方式

第一行包含四个整数 n,k,c,gn, k, c, g (1kn104)(1 \leq k \leq n \leq 10^{4}),分别表示小球数量、颜色数量、最大查询次数和子任务编号。cc 的限制详见数据范围与提示。

你可以进行不超过 cc 次查询。要进行一次查询,输出一行包含数字 11indexindex (1indexn)(1 \leq index \leq n),表示你想查看的小球位置。随后,输出换行符并刷新缓冲区。只有在完成这些操作后,你才能读取响应结果。

当你确定答案时,输出数字 22 以及长度为 nn 的数组 colorscolors,其中每个元素为 11kk 之间的整数。随后,输出换行符,刷新缓冲区,并终止程序。

5 3 100 0

0

0

1

1

0

2

3


1 1

1 2

1 3

1 4

1 5

1 1

1 3

2 1 2 1 2 3

假设 n=5n=5k=3k=3c=100c=100,隐藏颜色数组为 [2,1,2,1,3][2, 1, 2, 1, 3]

如果你查看第 11 个小球,得到的响应值为 11。如果你再次查看第 11 个小球,响应值为 22。接着查看第 22 个小球,响应值为 11。然后查看第 33 个小球,响应值为 33。查看第 44 个小球,响应值为 22。最后查看第 55 个小球,响应值为 11

之后,你可以返回数组 [2,3,2,3,1][2, 3, 2, 3, 1]。这个答案是正确的。

数据范围与提示

详细子任务附加限制及分值如下表所示:

子任务 分值 附加限制
11 77 n104n \leq 10^{4}k=n1k = n-1c=5104c = 5 \cdot 10^{4};有两个小球颜色相同,其余小球颜色各不相同
22 77 n104n \leq 10^{4}k=2k = 2c=5104c = 5 \cdot 10^{4}
33 1010 n500n \leq 500knk \leq nc=3105c = 3 \cdot 10^{5}
44 1414 n104n \leq 10^{4}k10k \leq 10c=3105c = 3 \cdot 10^{5}
55 1515 n104n \leq 10^{4}knk \leq nc=2104c = 2 \cdot 10^{4};每种颜色 11kk 的小球数量不同;每种颜色至少出现一次
66 4747 n104n \leq 10^{4}knk \leq nc=4106c = 4 \cdot 10^{6}

对于最后一个子任务:

  • 使用不超过 41064 \cdot 10^{6} 次查询,得 77 分;
  • 使用不超过 10610^{6} 次查询,得 1717 分;
  • 使用不超过 61056 \cdot 10^{5} 次查询,得 3232 分;
  • 使用不超过 31053 \cdot 10^{5} 次查询,得 4747 分。