题目描述
我们说两个多重集几乎确定相等,如果它们在至多一个元素上有所不同。也就是说,可以通过最多修改第一个多重集中的一个元素使两者相等。例如,多重集 {1,1,2} 和 {1,2,3} 是几乎确定相等的,{1,1,1} 和 {1,1,1} 是几乎确定相等的,而 {1,2,3} 和 {3,4,5} 不是几乎确定相等的。
小男孩瓦西娅非常喜欢这个定义,并立即想出了一个相关问题。
瓦西娅有两个数组 a 和 b,且对于所有 i 从 1 到 n,都有 ai≥bi。瓦西娅可以对数组 a 进行任意多次(包括零次)以下操作:选择任意编号 i (1≤i≤n),将 ai 减去 1。数组 b 保持不变。
瓦西娅很快明白了如何通过一系列操作使得数组 a 和 b 的多重集值几乎确定相等。因此,他将问题复杂化——现在他希望对这两个数组的每个前缀,了解需要应用的最小操作次数,使得前缀的数组值几乎确定相等。
更正式地说,对于从 1 到 n 的每个 k,瓦西娅希望取数组 a 的前 k 个元素 a1,a2,…,ak 和数组 b 的前 k 个元素 b1,b2,…,bk。他想知道需要进行的最小操作次数,使得这两个前缀的多重集几乎确定相等。注意,每个 k 的问题独立解决。
输入格式
每个测试点包含一个或多个输入数据组。第一行包含一个整数 t (1≤t≤100000),表示输入数据组的数量。接下来是各组数据的描述。
每组数据的第一行包含一个整数 n (1≤n≤200000),表示数组 a 和 b 的大小。
第二行包含 n 个整数 a1,a2,…,an (1≤ai≤109),表示数组 a 的元素。
第三行包含 n 个整数 b1,b2,…,bn (1≤bi≤ai),表示数组 b 的元素。
设 N 为所有数据组中 n 的总和。保证 N≤200000。
输出格式
对于每组输入数据,输出 n 个数字,每个数字表示对每个可能的前缀长度解决问题的答案。可以证明,答案始终存在。
4
2
3 4
1 2
2
3 4
1 3
3
11 17 14
1 13 10
4
100 11 50 42
30 1 20 5
0 1
0 0
0 4 2
0 10 30 48
3
4
2 4 5 12
1 3 4 10
4
3 5 8 20
1 2 6 7
4
4 4 4 4
1 2 3 4
0 1 1 3
0 1 3 6
0 2 3 3
数据范围与提示
详细子任务附加限制及分值如下表所示:
| 子任务 |
分值 |
附加限制 |
子任务依赖 |
备注 |
| 1 |
16 |
N≤100 |
0 |
|
| 2 |
13 |
N≤500 |
0,1 |
| 3 |
24 |
N≤3000 |
0∼2 |
| 4 |
13 |
|
|
ai<bi+1 |
| 5 |
14 |
4 |
ai≤ai+1,bi≤bi+1 |
| 6 |
20 |
0∼5 |
|