AT_abc313_d [ABC313D] Odd or Even
题目描述
[problemUrl]: https://atcoder.jp/contests/abc313/tasks/abc313_d
本题是一个**交互式问题**(你的程序需要与评测系统通过输入输出进行交互)。
给定整数 $N$ 以及小于 $N$ 的**奇数** $K$。
评测系统隐藏了一个由 $0$ 和 $1$ 组成的长度为 $N$ 的数列 $A = (A_1, A_2, \dots, A_N)$。
你无法直接知道数列 $A$ 的元素值。
但你可以最多进行 $N$ 次如下询问:
- 选择 $1$ 到 $N$ 之间的 $K$ 个互不相同的整数 $x_1, x_2, \dots, x_K$,询问 $A_{x_1} + A_{x_2} + \dots + A_{x_K}$ 的奇偶性。
请在不超过 $N$ 次询问内,唯一确定 $(A_1, A_2, \dots, A_N)$,并输出答案。
注意,**评测系统是自适应的**。换句话说,评测系统可以在不与之前所有询问的回答矛盾的前提下,自由更改 $A$ 的内容。
因此,只有当输出满足以下条件时,你的程序才会被判定为正确,否则判为错误:
- 经过所有询问后,只有唯一一个与所有回答都不矛盾的数列,并且该数列与你输出的数列一致。
输入格式
本题为交互式问题(你的程序需要与评测系统通过输入输出进行交互)。
首先,你需要从标准输入读取 $N$ 和 $K$。
> $N\ K$
接下来,你可以不断进行询问,直到能够唯一确定 $(A_1, A_2, \dots, A_N)$。
每次询问,请按如下格式输出到标准输出,其中 $x_1, x_2, \dots, x_K$ 是 $1$ 到 $N$ 之间互不相同的 $K$ 个整数:
> ? $x_1$ $x_2$ $\dots$ $x_K$
对于每次询问,评测系统会返回如下格式的响应:
> $T$
其中 $T$ 的含义如下:
- 若 $T$ 为 `0`,表示 $A_{x_1} + A_{x_2} + \dots + A_{x_K}$ 为偶数;
- 若 $T$ 为 `1`,表示 $A_{x_1} + A_{x_2} + \dots + A_{x_K}$ 为奇数。
如果 $x_1, x_2, \dots, x_K$ 不满足约束,或者询问次数超过 $N$ 次,则 $T$ 为 `-1`。
如果评测系统返回 `-1`,你的程序已被判为错误,请立即退出程序。
当你唯一确定了 $A$ 的所有元素后,请按如下格式输出答案,并立即退出程序:
> ! $A_1$ $A_2$ $\dots$ $A_N$
输出格式
见输入格式说明。
说明/提示
## 约束条件
- $1 \leq K < N \leq 1000$
- $K$ 是奇数
- $A_i$ 为 $0$ 或 $1$
## 注意事项
- **每次输出后请在末尾加上换行并刷新标准输出,否则可能会被判为 TLE。**
- **如果在交互过程中输出格式错误或程序中途退出,评测结果不确定。**
- 输出答案后请立即退出程序,否则评测结果不确定。
- 评测系统是自适应的,即它可以在不与之前所有回答矛盾的前提下随时更改 $A$ 的内容。
## 输入输出样例
以下为 $N=5, K=3$ 时的输入输出示例。**按照此示例输出会被判为 WA,请注意。**
在此示例中,程序输出的 $A = (1, 0, 1, 1, 0)$ 是与所有询问结果不矛盾的一个数列,但例如 $(0, 0, 1, 0, 0)$ 也同样不矛盾,因此 $A$ 并未唯一确定,所以判为错误。
| 输入 | 输出 | 说明 |
|:----:|:----:|:----|
| `5 3` | 首先给出整数 $N$ 和 $K$。 |
| `? 2 4 1` | 以 $(x_1, x_2, x_3) = (2, 4, 1)$ 进行询问。 |
| `0` | 询问的答案为 $0$,评测系统返回该值。 |
| `? 5 3 2` | 以 $(x_1, x_2, x_3) = (5, 3, 2)$ 进行询问。 |
| `1` | 询问的答案为 $1$,评测系统返回该值。 |
| `! 1 0 1 1 0` | 输出 $A$ 的答案为 $(1, 0, 1, 1, 0)$。由于 $A$ 未唯一确定,判为 WA。 |
由 ChatGPT 4.1 翻译