题目描述
有 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
样例 2
见附加文件中 [box2.in](file:box2.in) 和 [box2.ans](file:box2.ans)。
这个样例满足测试点 5∼8 的限制。
样例 3
见附加文件中 [box3.in](file:box3.in) 和 [box3.ans](file:box3.ans)。
这个样例满足测试点 9∼12 的限制。
样例 4
见附加文件中 [box4.in](file:box4.in) 和 [box4.ans](file:box4.ans)。
这个样例满足测试点 13∼14 的限制。
样例 5
见附加文件中 [box5.in](file:box5.in) 和 [box5.ans](file:box5.ans)。
这个样例满足测试点 15∼16 的限制。
样例 6
见附加文件中 [box6.in](file:box6.in) 和 [box6.ans](file:box6.ans)。
这个样例满足测试点 17∼18 的限制。
数据范围
保证对于任何测试点的任何一组数据,有 2≤n≤5×105,1≤S≤2×106,ai≥0,0≤wi<998244353。
测试点编号 |
T≤ |
n≤ |
S≤ |
特殊性质 |
1 |
1000 |
5 |
A |
2 |
3 |
5 |
9 |
无 |
4 |
5 |
10 |
2000 |
2000 |
6 |
7 |
8 |
9 |
2×105 |
10 |
11 |
12 |
13 |
2 |
2×105 |
B |
14 |
15 |
AC |
16 |
17 |
无 |
18 |
19 |
5 |
5×105 |
2×106 |
20 |
特殊性质 A:对于任意 1≤i<n,wi=1。
特殊性质 B:对于任意 1≤i<n−20,ai=0。
特殊性质 C:最多只有 20 个 i∈[1,n] 满足 ai=0。
提示
本题有读入量较大的测试点,为了优化程序运行的时间,我们建议你采用较为快速的读入方式。