CF2124E.Make it Zero

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

给定一个由 nn 个正整数组成的数组 aa。你可以进行如下操作:

  • 选择一个大小为 nn 的数组 bb,满足以下条件:
    • 对于每个 1≤i≤n1 \leq i \leq n,有 0≤bi≤ai0 \leq b_i \leq a_i;
    • 存在某个下标 1≤i<n1 \leq i < n,使得 b1+b2+…+bi=bi+1+bi+2+…+bnb_1+b_2+\ldots+b_i = b_{i+1}+b_{i+2}+\ldots+b_n,即前缀长度为 ii 的和等于后缀长度为 n−in-i 的和。
  • 然后,对每个 1≤i≤n1 \leq i \leq n,用 ai−bia_i-b_i 替换 aia_i。

你的任务是将所有元素都变为 00。请你求出最少需要多少次操作。

然后,输出一种实现操作的方法。如果无论进行多少次操作都无法将 aa 的所有元素变为 00,则输出 −1-1。可以证明,在本题的约束下,所需的最少操作次数不超过 1717。

输入格式

每组测试数据包含多组测试用例。第一行包含一个整数 tt(1≤t≤1041 \le t \le 10^4),表示测试用例的数量。

每组测试用例的第一行包含一个整数 nn(2≤n≤5⋅1042 \leq n \leq 5\cdot 10^4),表示数组 aa 的长度。

第二行包含 nn 个整数 a1,a2,…,ana_1,a_2,\ldots,a_n(1≤ai≤10121 \leq a_i \leq 10^{12}),表示数组 aa。

保证所有测试用例中 nn 的总和不超过 5⋅1045\cdot 10^4。

输出格式

对于每个测试用例,如果无解,输出 −1-1。

否则,首先输出一个整数 ss(1≤s≤171 \leq s \leq 17),表示将所有元素变为 00 所需的最少操作次数。

接下来 ss 行,每行输出 nn 个整数 b1,b2,…,bnb_1,b_2,\ldots,b_n(0≤bi≤ai0 \leq b_i \leq a_i),表示每次操作中选择的数组 bb。

操作完成后,aa 的所有元素都应变为 00。

输入输出样例

  • 输入#1

    3
    3
    1 2 3
    2
    2 5
    4
    5 3 1 5

    输出#1

    1
    1 2 3
    -1
    2
    3 1 1 1
    2 2 0 4

说明/提示

在第一个测试用例中,我们可以直接选择 b=ab=a 进行操作。这是合法的,因为 b1+b2=b3b_1+b_2=b_3。

在第二个测试用例中,可以证明无论如何都无法将 aa 的所有元素变为 00。

由 ChatGPT 4.1 翻译

输入解题思路,AI测评打分。不知道怎么写?

首页