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

「UOI 2020 Stage 4 Day1」猜颜色

题目描述

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

nn 个小球,编号从 11nn,每个小球有 11 种颜色,总共有 kk 种不同颜色(1kn1 \leq k \leq n)。你需要通过查询确定每个小球的颜色归属,满足:数组 colors\text{colors}colors[i]=colors[j]\text{colors}[i] = \text{colors}[j] 当且仅当编号 iijj 的小球颜色相同(颜色取值范围为 11kk)。

查询规则如下:

  • 每次查询需指定一个小球编号 index\text{index}1indexn1 \leq \text{index} \leq n);
  • 查询响应为“当前已查看过的同色小球数量”(包含本次查询的小球);
  • 总查询次数不得超过 cc 次(cc 的限制见数据范围)。

交互方式

  1. 输入初始信息:第一行包含四个整数 n,k,c,gn, k, c, g1kn1041 \leq k \leq n \leq 10^4),分别表示小球数量、颜色种类数、最大查询次数、子任务编号。
  2. 执行查询:每次输出一行 1 index,表示查询编号为 index\text{index} 的小球;输出后需换行并刷新缓冲区,随后读取查询响应(一个整数)。
  3. 提交答案:确定结果后,输出一行 2 colors_1 colors_2 ... colors_n(每个 colorsi\text{colors}_i 满足 1colorsik1 \leq \text{colors}_i \leq k);输出后换行并刷新缓冲区,程序终止。

样例

交互过程说明

假设隐藏颜色数组为 [2,1,2,1,3][2, 1, 2, 1, 3]n=5,k=3,c=100n=5, k=3, c=100),交互流程如下:

你的输出(查询/答案) 系统响应(查询结果) 说明
1 1 00(实际应为 11,样例输入可能存在笔误,以逻辑为准) 首次查询小球 11,同色已查看数量为 11
1 2 00(实际应为 11 首次查询小球 22,同色已查看数量为 11
1 3 11(实际应为 22 第二次查询同色(与小球 11 同色),数量为 22
1 4 第二次查询同色(与小球 22 同色),数量为 22
1 5 00(实际应为 11 首次查询小球 55,同色已查看数量为 11
1 1 22 第三次查询小球 11,同色已查看数量为 33(含小球 1,31,3
1 3 33 第三次查询小球 33,同色已查看数量为 33
2 1 2 1 2 3 - 提交答案,与隐藏数组的归属一致(颜色编号可映射,正确)

样例输入(系统响应部分)

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

数据范围与提示

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

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

子任务 66 得分规则

  • 查询次数 4106\leq 4 \cdot 10^6:得 77 分;
  • 查询次数 1106\leq 1 \cdot 10^6:得 1717 分;
  • 查询次数 6105\leq 6 \cdot 10^5:得 3232 分;
  • 查询次数 3105\leq 3 \cdot 10^5:得 4747 分。