#4536. [ABC102C] Linear Approximation

[ABC102C] Linear Approximation

【题目描述】

给定一个长度为 NN 的整数序列 A=(A1,A2,…,AN)A=(A_1, A_2, \dots , A_N)。
请任选一个整数 bb,使得下式最小:

∑i=1N∣Ai−(b+i)∣\sum_{i=1}^{N} \left| A_i - (b + i) \right|

输出这个最小值。


【输入格式】

第一行一个整数 NN。
第二行 NN 个整数 A1,A2,…,ANA_1, A_2, \dots , A_N。


【输出格式】

一行一个整数,表示最小可能的“悲しさ值”(即上述和的最小值)。


【样例输入 1】

5
2 2 3 5 5

【样例输出 1】

2

【样例说明 1】

取 b=1b = 1 时,
$\sum_{i=1}^{5} |A_i - (1 + i)| = |2-2|+|2-3|+|3-4|+|5-6|+|5-7| = 0+1+1+1+2 = 5$,
但样例给出的是 22,说明原题实际计算为 b=0b=0 时:
∣2−1∣+∣2−2∣+∣3−3∣+∣5−4∣+∣5−5∣=1+0+0+1+0=2|2-1|+|2-2|+|3-3|+|5-4|+|5-5| = 1+0+0+1+0 = 2,
为最小值。


【样例输入 2】

9
1 2 3 4 5 6 7 8 9

【样例输出 2】

0

【样例输入 3】

6
6 5 4 3 2 1

【样例输出 3】

18

【数据范围与约定】

  • 1≤N≤2×1051 \le N \le 2 \times 10^5
  • −109≤Ai≤109-10^9 \le A_i \le 10^9

所有输入均为整数。


【算法提示】

令 Bi=Ai−iB_i = A_i - i,则目标等价于求 bb 使得 ∑i=1N∣Bi−b∣\sum_{i=1}^{N} |B_i - b| 最小。
此和取最小值当且仅当 bb 为序列 BiB_i 的中位数。
使用排序后取中位数即可在 O(Nlog⁡N)O(N \log N) 内解决。