CF2124E.Make it Zero
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【codeforces】题库的题目,您提交的代码将被提交至codeforces进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
给定一个由 n 个正整数组成的数组 a。你可以进行如下操作:
- 选择一个大小为 n 的数组 b,满足以下条件:
- 对于每个 1≤i≤n,有 0≤bi≤ai;
- 存在某个下标 1≤i<n,使得 b1+b2+…+bi=bi+1+bi+2+…+bn,即前缀长度为 i 的和等于后缀长度为 n−i 的和。
- 然后,对每个 1≤i≤n,用 ai−bi 替换 ai。
你的任务是将所有元素都变为 0。请你求出最少需要多少次操作。
然后,输出一种实现操作的方法。如果无论进行多少次操作都无法将 a 的所有元素变为 0,则输出 −1。可以证明,在本题的约束下,所需的最少操作次数不超过 17。
输入格式
每组测试数据包含多组测试用例。第一行包含一个整数 t(1≤t≤104),表示测试用例的数量。
每组测试用例的第一行包含一个整数 n(2≤n≤5⋅104),表示数组 a 的长度。
第二行包含 n 个整数 a1,a2,…,an(1≤ai≤1012),表示数组 a。
保证所有测试用例中 n 的总和不超过 5⋅104。
输出格式
对于每个测试用例,如果无解,输出 −1。
否则,首先输出一个整数 s(1≤s≤17),表示将所有元素变为 0 所需的最少操作次数。
接下来 s 行,每行输出 n 个整数 b1,b2,…,bn(0≤bi≤ai),表示每次操作中选择的数组 b。
操作完成后,a 的所有元素都应变为 0。
输入输出样例
输入#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=a 进行操作。这是合法的,因为 b1+b2=b3。
在第二个测试用例中,可以证明无论如何都无法将 a 的所有元素变为 0。
由 ChatGPT 4.1 翻译
输入解题思路,AI测评打分。不知道怎么写?