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

「UOI 2020 Stage 4 Day1」猜颜色

题目描述

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

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

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

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

交互方式

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

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

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

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=5,k=3k=3,c=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 n≤104n \leq 10^{4};k=n−1k = n-1;c=5⋅104c = 5 \cdot 10^{4};有两个小球颜色相同,其余小球颜色各不相同
22 77 n≤104n \leq 10^{4};k=2k = 2;c=5⋅104c = 5 \cdot 10^{4}
33 1010 n≤500n \leq 500;k≤nk \leq n;c=3⋅105c = 3 \cdot 10^{5}
44 1414 n≤104n \leq 10^{4};k≤10k \leq 10;c=3⋅105c = 3 \cdot 10^{5}
55 1515 n≤104n \leq 10^{4};k≤nk \leq n;c=2⋅104c = 2 \cdot 10^{4};每种颜色 11 到 kk 的小球数量不同;每种颜色至少出现一次
66 4747 n≤104n \leq 10^{4};k≤nk \leq n;c=4⋅106c = 4 \cdot 10^{6}

对于最后一个子任务:

  • 使用不超过 4⋅1064 \cdot 10^{6} 次查询,得 77 分;
  • 使用不超过 10610^{6} 次查询,得 1717 分;
  • 使用不超过 6⋅1056 \cdot 10^{5} 次查询,得 3232 分;
  • 使用不超过 3⋅1053 \cdot 10^{5} 次查询,得 4747 分。