传统题 1000ms 256MiB

平衡序列极限消除

该比赛已结束,您无法在比赛模式下递交该题目。您可以点击“在题库中打开”以普通模式查看和递交本题。

题目描述

小 A 正在玩一个“平衡消除”游戏。给定一个正整数序列 AA,如果存在一个位置 ii1i<n1 \le i < n),使得前 ii 个数的和等于后面所有数的和,那么称这个位置是一个“平衡点”。

现在你要不断对序列执行下面的操作:

  • 如果当前序列存在平衡点,就选择最靠左的那个平衡点;
  • 删除这个平衡点右侧的所有元素,只保留左侧这一段;
  • 然后继续在新序列上重复这一过程。

当序列已经不存在平衡点时,操作结束。

请你输出最终保留下来的序列长度,以及最终序列的内容。

输入格式

第一行一个整数 TT,表示测试数据组数。

对于每组数据:

  • 第一行一个整数 nn
  • 第二行 nn 个正整数,表示序列内容。

输出格式

对于每组数据输出两行:

  • 第一行输出最终长度;
  • 第二行输出最终保留的序列。
2
6
1 2 3 6 12 24
4
2 3 1 4
2
1 2
2
2 3
1
5
1 1 2 1 1
5
1 1 2 1 1

说明/提示

样例 1 解释:

第一组数据中,初始序列为 1 2 3 6 12 24。第一次能找到的最靠左平衡点在 1 2 3 | 6 之后,保留前缀后得到 1 2 3 6;接着在新序列中,最靠左平衡点在 1 2 | 3 之后,再次保留前缀后得到 1 2。此时已经无法继续分割,因此最终答案为长度 22、序列 1 2

第二组数据中,2 3 1 4 的最靠左平衡点在 2 3 | 1 4 之间,因为左右两部分的和都为 55。保留后得到 2 3,总和为 55,已经无法继续平分,所以最终序列为 2 3

样例 2 解释:

序列 1 1 2 1 1 的总和为 66,但不存在一个位置能把它分成左右和相等的两部分,因此它从一开始就不能进行消除,最终保持原样。

对于所有测试点,保证 1T101 \le T \le 101n10001 \le n \le 10001Ai10001 \le A_i \le 1000

2026年04月技术考核

未参加
状态
已结束
规则
IOI
题目
14
开始于
2026-4-23 14:00
结束于
2026-4-23 18:00
持续时间
4 小时
主持人
参赛人数
8