题目描述
本题与 C 题(Adjacent Sums (easy))题面完全相同,只有 M 的取值范围不同:本题 M≥3 且最大可达 109。
给定两个整数序列 A=(A1,A2,…,AN) 和 B=(B1,B2,…,BN−1),其中每个元素都在 0 到 M−1 之间。A 的长度是 N,B 的长度是 N−1。
你可以对 A 进行任意多次下面的操作:
- 选一个整数 i(1≤i≤N),把 Ai 加 1。
请求出使下面条件成立所需的最少操作次数(题目保证在本题约束下一定可以做到):
- 对每个 i=1,2,…,N−1,Ai+Ai+1 除以 M 的余数等于 Bi。
注意:操作只能加 1,不能减,但可以无限次加。
输入格式
N M
A_1 A_2 ... A_N
B_1 B_2 ... B_{N-1}
输出格式
在一行中输出最少操作次数。
输入示例 1
3 10
4 6 7
5 5
输出示例 1
5
示例 1 说明
一种最优方案(共 5 次操作):
- 对 i=2 加一次,A=(4,7,7);
- 对 i=1 加三次,A=(7,7,7);
- 对 i=2 再加一次,A=(7,8,7)。
此时 A1+A2=15,15mod10=5=B1;A2+A3=15,15mod10=5=B2,条件成立。
可以证明 4 次以内做不到,所以答案是 5。
输入示例 2
2 3
1 2
2
输出示例 2
2
示例 2 说明
只有一个条件 A1+A2≡2(mod3)。当前 1+2=3≡0,不满足。把 A2 加两次得到 A=(1,4),1+4=5≡2(mod3),成立,共 2 次操作。
输入示例 3
10 10
0 1 2 3 4 5 6 7 8 9
9 8 7 6 5 4 3 2 1
输出示例 3
40
示例 3 说明
这里 A=(0,1,2,…,9)、B=(9,8,…,1)、M=10。注意到当前每一对相邻和恰好是 Ai+Ai+1=2i−1,而要求的 Bi=10−i,两者相差不小,需要多次操作。
最优方案总共需要 40 次操作。本组数据的意义在于:它的最优 x1 并不是 0,能卡住「只试 x1=0」的错解。
约束条件
- 2≤N≤2×105
- 3≤M≤109
- 0≤Ai≤M−1
- 0≤Bi≤M−1
- 所有输入值均为整数