题目描述
有 n 个不同的盒子排成一排。在初始状态下,第 i 个盒子放有 ai 个货物,总货物数量为 S=∑i=1nai。对于非负整数数组 (b1,b2,…,bn) 满足 ∑i=1nbi=S,考察以下问题:
你想让第 i 个盒子中拥有恰好 bi 个货物,为此你可以做如下操作若干次:对两个相邻的盒子,把其中一个盒子的恰好一个货物移动至另一个。对 i,i+1(1≤i<n)号盒子做一次操作的代价为 wi。注意:将 i 号盒子的一个货物移动到 i+1 号盒子和将 i+1 号盒子的一个货物移动到 i 号盒子的代价都是 wi。你需要保证在操作中不存在盒子中的货物数量是负数。
在以上问题下,定义从初始状态达到第 i 个盒子拥有恰好 bi 个货物的状态的最小代价为 val(b1,b2,…,bn),你需要求出对所有满足 ∑i=1nbi=S 的非负整数数组 (b1,b2,…,bn),val(b1,b2,…,bn) 的和。输出这个答案对 998244353 取模后的结果。
输入格式
本题有多组测试数据。输入的第一行包含一个正整数 T,表示测试数据组数。
对于每组数据,输入共三行。第一行一个正整数 n 表示盒子的个数,第二行 n 个正整数 a1,a2,…,an 描述初始状态,第三行 n−1 个正整数 w1,w2,…,wn−1 描述移动货物的代价。
输出格式
对于每组测试数据输出一行一个整数,表示对于所有满足 ∑i=1nbi=S 的非负整数数组,达到目标的代价的最小值之和模 998244353 的结果。
2
2
2 3
65472
5
1 3 2 1 1
2 3 3 3
589248
8589
提示
【样例解释 #1】
对于第一组数据,一共有六种需要考虑的情形,它们的 b1 和 b2 构成的二元组 (b1,b2) 分别为 (0,5),(1,4),(2,3),(3,2),(4,1),(5,0)。
对于第一种情形,需要至少 2 次移动,代价最小值为 65472×2=130944。
对于第二种情形,需要至少 1 次移动,代价最小值为 65472。
对于第三种情形,不需要做任何操作,代价最小值为 0。
对于第四种情形,需要至少 1 次移动,代价最小值为 65472。
对于第五种情形,需要至少 2 次移动,代价最小值为 65472×2=130944。
对于最后一种情形,需要至少 3 次移动,代价最小值为 65472×3=196416。
因此,最小代价之和为 $130944 + 65472 + 0 + 65472 + 130944 + 196416 = 589248$。
【样例 #2】
见附件中的 box/box2.in
与 box/box2.ans
。
这个样例满足测试点 5∼8 的限制。
【样例 #3】
见附件中的 box/box3.in
与 box/box3.ans
。
这个样例满足测试点 9∼12 的限制。
【样例 #4】
见附件中的 box/box4.in
与 box/box4.ans
。
这个样例满足测试点 13∼14 的限制。
【样例 #5】
见附件中的 box/box5.in
与 box/box5.ans
。
这个样例满足测试点 15∼16 的限制。
【样例 #6】
见附件中的 box/box6.in
与 box/box6.ans
。
这个样例满足测试点 17∼18 的限制。
【数据范围】
保证对于任何测试点的任何一组数据,有 2≤n≤5×105,1≤S≤2×106,ai≥0,0≤wi<998244353。
测试点编号 |
T≤ |
n≤ |
S≤ |
特殊性质 |
1∼2 |
1000 |
5 |
A |
3∼4 |
5 |
9 |
无 |
5∼8 |
10 |
2000 |
2000 |
9∼12 |
2×105 |
13∼14 |
2 |
2×105 |
B |
15∼16 |
AC |
17∼18 |
无 |
19∼20 |
5 |
5×105 |
2×106 |
特殊性质 A:对于任意 1≤i<n,wi=1。
特殊性质 B:对于任意 1≤i<n−20,ai=0。
特殊性质 C:最多只有 20 个 i∈[1,n] 满足 ai=0。
【提示】
本题有读入量较大的测试点,为了优化程序运行的时间,我们建议你采用较为快速的读入方式。