#P1034. 能量分流
能量分流
能量分流
题目描述
夜之城的荒坂网络中存储着 个量子能量节点,每个节点拥有能量值 。作为一名潜入荒坂主机的网潜者,你的目标是将所有节点的能量完全清零,从而关闭该区域的防火墙。
你可以反复执行一种名为 “能量分流(Energy Split)” 的黑客操作。
首先,你可以选择一个长度为 的能量调制数组 ,使其满足以下两个条件:
-
对于每个节点 ,能量调制值满足
-
对于这个数组 ,必须存在某个切割点 ,使得
执行一次操作后,你会把每个节点能量降为: .
你的任务是: 在不触发防火墙的前提下(满足条件 1 与条件 2),以最少的操作次数将所有能量节点完全清零。
若任何方式都无法成功清零所有节点,则输出 -1。
题目保证在给定的约束下,最优答案的操作次数不超过 40 次。
输入格式
第一行:测试用例数量 。
每组测试用例包含:
- 第一行一个整数 ,表示量子能量节点数量。
- 第二行输入 个整数 表示各节点初始能量。
保证所有测试的 之和不超过 。
输出格式
若无解,输出 -1。
若有解:
- 第一行输出一个整数
s——所需最少的能量分流次数; - 接着输出
s行,每行输出n个整数 ,表示本次操作从每个节点抽取的能量。
如果有多组解,输出任意一组即可。 所有操作执行后必须满足所有能量节点均为 0。
样例 1
3
3
1 2 3
2
2 5
4
5 3 1 5
1
1 2 3
-1
2
3 1 1 1
2 2 0 4
提示
第一组中直接取 即可,因 ;
第二组无法清零;
第三组示例给出了可行方案:
- 第一次操作:取 ,分割点为 ,使得 ,能量变为
- 第二次操作:取 ,分割点为 ,使得 ,能量变为