题目名称 4464. 一周一次买下同班同学的那些事
输入输出 bought.in/out
难度等级
时间限制 2000 ms (2 s)
内存限制 512 MiB
测试数据 10
题目来源 Gravatar 于2026-08-27加入
开放分组 全部用户
提交状态
分类标签
分享题解
通过:14, 提交:24, 通过率:58.33%
GravatarRuyi 100 0.274 s 4.92 MiB C++
GravatarRuyi 100 0.296 s 5.01 MiB C++
Gravatardream 100 0.303 s 4.78 MiB C++
Gravatar 100 0.305 s 4.17 MiB C++
Gravatarexil 100 0.312 s 4.46 MiB C++
Gravataryanglich 100 0.339 s 5.63 MiB C++
Gravataryanglich 100 0.349 s 5.63 MiB C++
Gravatarzcx 100 0.350 s 8.52 MiB C++
GravatarChenBp 100 0.351 s 4.58 MiB C++
Gravataryanglich 100 0.351 s 5.64 MiB C++
本题关联比赛
2026.8.28
关于 一周一次买下同班同学的那些事 的近10条评论(全部评论)

4464. 一周一次买下同班同学的那些事

★   输入文件:bought.in   输出文件:bought.out   评测插件
时间限制:2 s   内存限制:512 MiB

【题目背景】

全名为《我买下了与她的每周密会~以五千圆为借口,共度两人时光~》。

宫城又离家出走了。

【题目描述】

仙台给了你一个长度为 $n$ 的宫城好感度数组 $a$,好感度数组中的元素为非零整数,可以为负数(问就是仙台宫城生气了)。为了让宫城回来,仙台最多可以进行 $n$ 次如下操作(也可以一次都不做):

- 选择一个下标 $i$($1 \le i \le n$),要求好感度 $a_i > 0$;

- 对于每个 $j$ 满足 $1 \le j \le i$,执行 $a_j := -a_j$。

请你帮助仙台输出一组长度不超过 $n$ 的合法操作序列,使最终数组 $a$ 的元素和最大。

【输入格式】

每组测试数据包含多组测试用例。第一行输入测试用例的数量 $t$($1 \le t \le 10^4$)。接下来每组测试用例如下:

第一行输入一个整数 $n$($2 \le n \le 2 \cdot 10^5$),表示数组 $a$ 的长度。

第二行输入 $n$ 个整数 $a_1,a_2,\ldots,a_n$($-10^9 \le a_i \le 10^9, a_i \ne 0$)。

保证所有测试用例的 $n$ 之和不超过 $2 \cdot 10^5$。

【输出格式】

对于每组测试用例,输出一行整数 $k$($0 \le k \le n$),表示你执行操作的次数。

接下来输出一行 $k$ 个整数 $b_1,\ldots,b_k$,其中 $b_i$ 表示你在第 $i$ 次操作选择的下标。

操作序列执行完后,数组 $a$ 的和应当被最大化。

【样例输入】

5
5
-1 -2 -3 -5 -4
4
5 7 10 19
5
1 -3 2 -1 10
4
16 -13 -18 -16
11
2 -10 -11 3 -10 15 7 18 16 17 -9

【样例输出】

0

0

2
1 3
0

6
6 3 1 5 4 7

【样例说明】

在第一个测试用例中,没有可行的操作。

在第二个测试用例中,好感度数组的和已经最大。

在第三个测试用例中,操作如下:

- $[1, -3, 2, -1, 10] \rightarrow{i = 1} [\color{red}{-1}, -3, 2, -1, 10]$

- $[-1, -3, 2, -1, 10] \rightarrow{i = 3} [\color{red}{1, 3, -2}, -1, 10]$

此时的数组和为 $11$,这是可以达到的最大值。

【数据规模与约定】

对于 $50\%$ 的数据,满足 $1 \le n \le 5000,1 \le \sum n \le 10^4$。

什么,你问我 checker 在哪,因为宫城离家出走了,仙台很着急,没有时间给你写 checker。

大洋里的 ans 中只有最大值,没有输出方案,请选手自行检查输出方案(本来是没有大洋里的)。

大洋里