#abc467e. Adjacent Sums (hard)

    ID: 4368 Type: Default 1000ms 256MiB Tried: 0 Accepted: 0 Difficulty: 4 Uploaded By: Tags>普及+/提高同余分段函数事件排序递推

Adjacent Sums (hard)

题目描述

本题与 C 题(Adjacent Sums (easy))题面完全相同,只有 MM 的取值范围不同:本题 M3M \ge 3 且最大可达 10910^9

给定两个整数序列 A=(A1,A2,,AN)A = (A_1, A_2, \ldots, A_N)B=(B1,B2,,BN1)B = (B_1, B_2, \ldots, B_{N-1}),其中每个元素都在 00M1M-1 之间。AA 的长度是 NNBB 的长度是 N1N-1

你可以对 AA 进行任意多次下面的操作:

  • 选一个整数 ii1iN1 \le i \le N),把 AiA_i 11

请求出使下面条件成立所需的最少操作次数(题目保证在本题约束下一定可以做到):

  • 对每个 i=1,2,,N1i = 1, 2, \ldots, N-1Ai+Ai+1A_i + A_{i+1} 除以 MM 的余数等于 BiB_i

注意:操作只能加 11,不能减,但可以无限次加。

输入格式

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 说明

一种最优方案(共 55 次操作):

  • i=2i=2 加一次,A=(4,7,7)A = (4,7,7)
  • i=1i=1 加三次,A=(7,7,7)A = (7,7,7)
  • i=2i=2 再加一次,A=(7,8,7)A = (7,8,7)

此时 A1+A2=15A_1 + A_2 = 1515mod10=5=B115 \bmod 10 = 5 = B_1A2+A3=15A_2 + A_3 = 1515mod10=5=B215 \bmod 10 = 5 = B_2,条件成立。

可以证明 44 次以内做不到,所以答案是 55

输入示例 2

2 3
1 2
2

输出示例 2

2

示例 2 说明

只有一个条件 A1+A22(mod3)A_1 + A_2 \equiv 2 \pmod 3。当前 1+2=301 + 2 = 3 \equiv 0,不满足。把 A2A_2 加两次得到 A=(1,4)A = (1,4)1+4=52(mod3)1+4 = 5 \equiv 2 \pmod 3,成立,共 22 次操作。

输入示例 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)A = (0,1,2,\ldots,9)B=(9,8,,1)B = (9,8,\ldots,1)M=10M = 10。注意到当前每一对相邻和恰好是 Ai+Ai+1=2i1A_i + A_{i+1} = 2i - 1,而要求的 Bi=10iB_i = 10 - i,两者相差不小,需要多次操作。

最优方案总共需要 4040 次操作。本组数据的意义在于:它的最优 x1x_1 并不是 00,能卡住「只试 x1=0x_1 = 0」的错解。

约束条件

  • 2N2×1052 \le N \le 2 \times 10^5
  • 3M109\bm{3 \le M \le 10^9}
  • 0AiM10 \le A_i \le M-1
  • 0BiM10 \le B_i \le M-1
  • 所有输入值均为整数