CF1270G Subset with Zero Sum

题目描述

给定 $n$ 个整数 $a_1, a_2, \dots, a_n$,其中对于每个 $1 \le i \le n$,都有 $i-n \le a_i \le i-1$。 请找出这 $n$ 个整数中的某个非空子集,使得其元素之和等于 $0$。在给定的约束下,可以保证一定存在这样的子集。如果存在多个满足条件的子集,你可以输出其中任意一个。

输入格式

每个测试点包含多个测试用例。第一行包含一个整数 $t$($1 \le t \le 10^6$),表示测试用例的数量。 接下来每个测试用例的第一行包含一个整数 $n$($1 \le n \le 10^6$)。 第二行包含 $n$ 个整数 $a_1, a_2, \dots, a_n$($i-n \le a_i \le i-1$)。 保证所有测试用例中 $n$ 的总和不超过 $10^6$。

输出格式

对于每个测试用例,输出两行。 第一行输出一个整数 $s$($1 \le s \le n$),表示你选择的子集的元素个数。 第二行输出 $s$ 个不同的整数 $i_1, i_2, \dots, i_s$($1 \le i_k \le n$),表示所选子集对应的下标。要求 $a_{i_1} + a_{i_2} + \dots + a_{i_s} = 0$。如果存在多个满足条件的子集,你可以输出其中任意一个。

说明/提示

在第一个样例中,取 $a_1 = 0$,其和为 $0$。 在第二个样例中,取 $a_1 + a_4 + a_3 + a_2 = 0$。 由 ChatGPT 4.1 翻译