AT_arc018_3.[ARC018C] 席替え
提高+/省选-
通过率:0%
AC君温馨提醒
该题目为【atcoder】题库的题目,您提交的代码将被提交至atcoder进行远程评测,并由ACGO抓取测评结果后进行展示。由于远程测评的测评机由其他平台提供,我们无法保证该服务的稳定性,若提交后无反应,请等待一段时间后再进行重试。
题目描述
我所在的学校每个班级的人数特别多,甚至有多达 1,000,000 人的班级。我的班级也不例外。教室的座位排成 N 行 M 列的矩形,共有 N×M 名学生,每人拥有一张自己的桌子。
学校非常重视防灾意识,如果发生意外,教室后面的墙壁可以打开,让学生从这里避难。最近,学校决定让成绩好的学生优先撤离,所以我们班决定重新安排座位,让成绩好的学生坐得更靠后。具体来说,把最前面的一行称为第 0 行,最左边的一列称为第 0 列。位于第 i 行第 j 列的座位用 (i,j) 表示,坐在这个位置的学生成绩用 G[i][j] 表示。对于任意两个座位 (a,b) 和 (c,d),如果 a>c,则无论 b,d 的值如何,必须满足 G[a][b]≥G[c][d]。
学生可以自由移动到任意座位,但是不能有两个或更多学生坐在同一座位,也不能有空位。同时,桌子数量不能改变,仍保持 N 行 M 列的布局。
重新安排座位是好事,但由于人数众多,我们希望尽量减少所有学生移动的总距离。这里的移动距离是指从原座位到新座位的曼哈顿距离,即如果一个学生从 (a,b) 移动到 (c,d),则移动距离为 ∣a−c∣+∣b−d∣。
给定所有学生在重新安排前的成绩数据,请计算所有学生的最小移动距离总和。
输入格式
- 第一行包含两个整数 N 和 M,分别表示教室的行数和列数(1≤N,M≤1,000)。
- 第二行包含三个整数 x0、a 和 p,用来生成每位学生的初始成绩(0≤x0,a≤109,N×M≤p≤109,p 必为素数)。初始成绩通过递归式 xi=(xi−1+a)modp 生成。在位置 (i,j) 的学生成绩为 xi×M+j。
输出格式
输出所有学生移动距离最小总和。最后包括一个换行符。
数据范围和提示
- 1≤N,M≤1,000
- 0≤x0,a≤109
- N×M≤p≤109 且 p 为素数
示例
输入
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) 和 (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测评打分。不知道怎么写?