#G0120. 江桥的删除序列【2025暑假集训T6】
江桥的删除序列【2025暑假集训T6】
题目描述
给你一个长度为 的数组 和一个长度为 的数组 (所有 满足 )。
最初, 的值是 。你的目标是通过重复执行这两个操作中的一个,使数组 为空:
- 类型 1:如果 的值小于 ,且数组 不为空,则可以不花费任何代价将 的值增加 。
- 类型 2:删除数组 的一个非空前缀,使得其总和不超过 。此操作的代价为 。
求使数组 被删除为空的最小总代价。
如果无法通过任何操作序列实现,则输出 。否则,输出操作的最小总代价,以及产生这个最小代价的操作序列的数量对 取模。对于部分子任务,只需要求出最小总代价。
如果在任何一步中选择了不同的操作类型,或者在任何一步中删除的前缀大小不同,那么这两个操作序列就会被认为是不同的。
输入格式
输入包含多组数据。第一行两个整数 ,表示数据组数和该组数据的子任务信息。
对于每组测试数据,第一行两个正整数 ,表示数组 和 的元素数量。
接下来一行 个正整数,表示 。
接下来一行 个正整数,表示 。
请注意数据范围中对 的限制。
输出格式
对于每组测试数据,如果答案存在,输出一行两个非负整数 ,分别代表数组 被删除为空的最小总代价和 产生这个最小代价的操作序列的数量对 取模。如果答案不存在,输出 -1
。
5 1
4 2
9 3 4 3
11 7
1 2
20
19 18
10 2
2 5 2 1 10 3 2 9 9 6
17 9
10 11
2 2 2 2 2 2 2 2 2 2
20 18 16 14 12 10 8 6 4 2 1
1 6
10
32 16 8 4 2 1
1 3
-1
2 11
10 42
4 1
5 0
4 2
9 3 4 3
11 7
1 2
20
19 18
10 2
2 5 2 1 10 3 2 9 9 6
17 9
10 11
2 2 2 2 2 2 2 2 2 2
20 18 16 14 12 10 8 6 4 2 1
1 6
10
32 16 8 4 2 1
1 0
-1
2 0
10 0
4 0
样例解释
在第一个测试案例中,有 个最佳操作序列,产生的总成本为 :
- 所有 序列都以 类型的操作开始,移除前缀 以生成 ,产生的成本为 。然后,我们执行 类型操作,将 的值增加 (此时 ) 。接下来的所有操作都会产生 的代价。
- 其中一个序列是先删除前缀 然后删除 。
- 另一个序列是先删除前缀 然后删除 。
- 另一个序列是先删除前缀 ,然后删除 和 。
在第二个测试案例中,不可能删除数组 之后的任何前缀,因此数组 不能通过任何操作序列变为空。
数据规模与约定
下发文件分别对应子任务 、、。
有合理的子任务依赖。
子任务编号 | 特殊性质 | 分值 | |
---|---|---|---|
对于 的数据:保证 $1 \leq T \leq 10^3,f \in \{0,1\},1 \leq n,m,n\times m,\sum n \times m \leq 3 \times 10^{5},1 \leq a_i,b_i \leq 10^9,$ 所有 满足 。