D. [R54D]取模加和交换

    Type: Default 1000ms 512MiB

[R54D]取模加和交换

You cannot submit for this problem because the contest is ended. You can click "Open in Problem Set" to view this problem in normal mode.

时空限制

1S/512M

题目描述

给你两个长度为 nn 的序列 a1,a2,,ana_1,a_2,\dots,a_nb1,b2,,bnb_1,b_2,\dots,b_n 以及一个正整数 mm,保证 a,ba,b 中所有元素都在 00m1m-1 之间(包括边界),你可以对 aa 进行任意多次操作(可能为 00 次),每次操作你可以选择下面 22 种类型中的任意一种:

  1. 选择两个整数 i,ji,j 满足 1i<jn1 \le i < j \le n,交换 aia_iaja_j,该类型的操作代价为 00
  2. 选择一个整数 ii 满足 1in1 \le i \le n,使得 ai:=(ai+1)modma_i:=(a_i+1) \bmod m。具体地说,如果 ai=m1a_i = m-1,则让 ai:=0a_i:=0,否则让 ai:=ai+1a_i:=a_i+1,该类型的操作代价为 11

你需要求出通过执行上述操作,使得操作后序列 aa 变得与序列 bb 相同的总操作代价的最小值,请你输出这个值。

可以证明,一定存在一种操作方案能使得 aa 变得与 bb 相同。

格式

输入格式

第一行包含两个整数 n,mn,m,分别表示序列长度和操作的模数。

接下来一行包含 nn 个整数 a1,a2,,ana_1,a_2,\dots,a_n,表示序列 aa

接下来一行包含 nn 个整数 b1,b2,,bnb_1,b_2,\dots,b_n,表示序列 bb

输出格式

输出一行一个整数,表示通过执行上述操作,使得操作后序列 aa 变得与序列 bb 相同的总操作代价的最小值。

样例

样例输入 #1

3 5
4 3 1
1 0 2

样例输出 #1

5

样例解释 #1

下面是一种可行的操作方案:

执行类型 22 的操作,选择 i=1i=1,操作后 aa 变为 [0,3,1][0,3,1],代价为 11

执行类型 11 的操作,选择 i=1,j=2i=1,j=2,操作后 aa 变为 [3,0,1][3,0,1],代价为 00

执行类型 22 的操作,选择 i=3i=3,操作后 aa 变为 [3,0,2][3,0,2],代价为 11

执行类型 22 的操作,选择 i=1i=1,操作后 aa 变为 [4,0,2][4,0,2],代价为 11

执行类型 22 的操作,选择 i=1i=1,操作后 aa 变为 [0,0,2][0,0,2],代价为 11

执行类型 22 的操作,选择 i=1i=1,操作后 aa 变为 [1,0,2][1,0,2],代价为 11

该操作方案的总代价为 1+0+1+1+1+1=51+0+1+1+1+1=5,可以证明不存在总代价更小的操作方案。

样例输入 #2

5 7
1 5 3 2 5
4 4 6 1 6

样例输出 #2

5

数据规模

注意:你只有通过了子任务的所有测试点,才能获得对应子任务的分数。

子任务编号 分数 nn \le mm \le
11 1010 1010 10910^9
22 3030 50005000
33 2020 2×1052 \times 10^5 22
44 4040 10910^9

对于 100%100\% 的数据:1n2×1051 \le n \le 2 \times 10^51<m1091 < m \le 10^90ai,bi<m0 \le a_i,b_i <m

代码源挑战赛 Round 54

Not Attended
Status
Done
Rule
DMY
Start at
2026-3-27 20:00
End at
2026-3-27 21:30
Duration
1.5 hour(s)
Host
Partic.
455