#4536. [ABC102C] Linear Approximation

[ABC102C] Linear Approximation

【题目描述】

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

i=1NAi(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 时:
21+22+33+54+55=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

【数据范围与约定】

  • 1N2×1051 \le N \le 2 \times 10^5
  • 109Ai109-10^9 \le A_i \le 10^9

所有输入均为整数。


【算法提示】

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