P14118 [SCCPC 2021] Hotpot
题目描述
四川火锅是全世界最著名的美食之一。人们都喜欢它辛辣的味道。
现在有 $n$ 位游客,编号从 $0$ 到 $n-1$,围坐在火锅旁边。一共有 $k$ 种火锅食材,第 $i$ 位游客最喜欢的食材是 $a_i$。一开始,每位游客的幸福值为 $0$,火锅里是空的。
游客们会依次进行 $m$ 次操作,第 $i$ 次(编号从 $0$ 到 $m-1$)由编号为 $i\bmod n$ 的游客执行。每当游客 $t$ 操作时:
- 如果火锅中已有食材 $a_t$,他会把这些食材都吃掉,幸福值增加 $1$。
- 否则,他会向火锅中加入一份食材 $a_t$,幸福值不变。
你的任务是计算每位游客在 $m$ 次操作后各自的幸福值。
输入格式
有多组测试数据。输入的第一行为整数 $T$,表示测试数据组数,$1 \le T \le 10^3$。对于每组测试数据:
第一行包含三个整数 $n, k, m$,$1 \le n \le 10^5$,$1 \le k \le 10^5$,$1 \le m \le 10^9$,分别表示游客人数、食材种类数和操作次数。
第二行包含 $n$ 个整数 $a_0, a_1, \cdots, a_{n-1}$,$1 \le a_i \le k$,其中 $a_i$ 表示第 $i$ 位游客最喜欢的食材编号。
保证所有测试数据中 $n$ 的总和和 $k$ 的总和均不超过 $2 \times 10^5$。
输出格式
对于每组测试数据,输出 $n$ 个用空格隔开的整数 $h_0, h_1, \cdots, h_{n-1}$,其中 $h_i$ 表示第 $i$ 位游客在 $m$ 次操作后获得的幸福值。
请不要在每行末尾输出多余的空格,否则答案可能会被判为错误!
说明/提示
第一个示例的执行过程如下:
$$
\begin{array}{|c|c|c|c|}
\hline
\textbf{操作} & \textbf{游客} & \textbf{操作内容} & \textbf{操作后火锅状态} \\
\hline
0 & 0 & 向火锅中加入食材 1 & \{1\} \\
\hline
1 & 1 & 吃掉火锅中的食材 1 & \{\} \\
\hline
2 & 2 & 向火锅中加入食材 2 & \{2\} \\
\hline
3 & 0 & 向火锅中加入食材 1 & \{1, 2\} \\
\hline
4 & 1 & 吃掉火锅中的食材 1 & \{2\} \\
\hline
5 & 2 & 吃掉火锅中的食材 2 & \{\} \\
\hline
\end{array}
$$
由 ChatGPT 5 翻译