AT_arc018_3.[ARC018C] 席替え

提高+/省选-

通过率:0%

AC君温馨提醒

该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。

题目描述

我所在的学校每个班级的人数特别多,甚至有多达 1,000,0001,000,000 人的班级。我的班级也不例外。教室的座位排成 NN 行 MM 列的矩形,共有 N×MN \times M 名学生,每人拥有一张自己的桌子。

学校非常重视防灾意识,如果发生意外,教室后面的墙壁可以打开,让学生从这里避难。最近,学校决定让成绩好的学生优先撤离,所以我们班决定重新安排座位,让成绩好的学生坐得更靠后。具体来说,把最前面的一行称为第 00 行,最左边的一列称为第 00 列。位于第 ii 行第 jj 列的座位用 (i,j)(i, j) 表示,坐在这个位置的学生成绩用 G[i][j]G[i][j] 表示。对于任意两个座位 (a,b)(a, b) 和 (c,d)(c, d),如果 a>ca > c,则无论 b,db, d 的值如何,必须满足 G[a][b]≥G[c][d]G[a][b] \geq G[c][d]。

学生可以自由移动到任意座位,但是不能有两个或更多学生坐在同一座位,也不能有空位。同时,桌子数量不能改变,仍保持 NN 行 MM 列的布局。

重新安排座位是好事,但由于人数众多,我们希望尽量减少所有学生移动的总距离。这里的移动距离是指从原座位到新座位的曼哈顿距离,即如果一个学生从 (a,b)(a, b) 移动到 (c,d)(c, d),则移动距离为 ∣a−c∣+∣b−d∣|a - c| + |b - d|。

给定所有学生在重新安排前的成绩数据,请计算所有学生的最小移动距离总和。

输入格式

  • 第一行包含两个整数 NN 和 MM,分别表示教室的行数和列数(1≤N,M≤1,0001 \le N, M \le 1,000)。
  • 第二行包含三个整数 x0x_0、aa 和 pp,用来生成每位学生的初始成绩(0≤x0,a≤1090 \le x_0, a \le 10^9,N×M≤p≤109N \times M \le p \le 10^9,pp 必为素数)。初始成绩通过递归式 xi=(xi−1+a)mod  px_i = (x_{i-1} + a) \mod p 生成。在位置 (i,j)(i, j) 的学生成绩为 xi×M+jx_{i \times M + j}。

输出格式

输出所有学生移动距离最小总和。最后包括一个换行符。

数据范围和提示

  • 1≤N,M≤1,0001 \le N, M \le 1,000
  • 0≤x0,a≤1090 \le x_0, a \le 10^9
  • N×M≤p≤109N \times M \le p \le 10^9 且 pp 为素数

示例

输入

2 3
1 2 59

输出

0

解释

重新安排座位前,学生的成绩如下:

1  3  5
7  9 11

各座位在自己后面(屏幕下方)没有比自己成绩更差的学生,因此无需重新安排。

输入

2 3
6 55 59

输出

2

解释

重新安排座位前,学生的成绩如下:

6  2 57
53 49 45

交换座位 (0,2)(0, 2) 和 (1,2)(1, 2) 的学生即可。两者分别移动 1 个单位,总移动距离为 2。

输入

4 5
15 25 79

输出

26

解释

重新安排座位前,学生的成绩如下:

15 40 65 11 36
61  7 32 57  3
28 53 78 24 49
74 20 45 70 16

符合条件的重新安排如:

15  7 16 11  3
28 20 32 24 36
53 40 45 57 49
74 61 65 70 78

本翻译由 AI 自动生成

输入解题思路,AI测评打分。不知道怎么写?

首页