Absolute Sorting
题意
给定一个乱序数组,判断是否存在一个数值x,让这个数组减去x后非递减排序。并且\(a[i] = abs(a[i] - x)\)。如果存在,输出x,否则输出-1。
⭐rating: 1400
分析
如果 \(a_i=a_{i+1}\),始终存在 \(|a_i-x|\le|a_{i+1}-x|\) 的情况,对于任意的 \(x\) 都可以取到。
对于 \(a_i\le a_{i+1}\) 的情况:
-
\(x\le a_i\) 时: $$ \begin{aligned} |a_i-x|\le|a_{i+1}-x| & \rightarrow a_i\le a_{i+1} \end{aligned} $$
-
\(a_i\le x\le a_{i+1}\) 时:
\[\begin{aligned}
|a_i-x|\le|a_{i+1}-x|
& \rightarrow 2x\le a_i+a_{i+1} \\
& \rightarrow x\le \left \lfloor \frac{a_i+a_{i+1}}{2} \right \rfloor \\
\end{aligned}\]
- \(a_{i+1}\le x\) 时:
\[\begin{aligned}
|a_i-x|\le|a_{i+1}-x|
& \rightarrow a_{i+1}\le a_i
\end{aligned}\]
上述可得,\(x\le \left \lfloor \frac{a_i+a_{i+1}}{2} \right \rfloor\) 时满足 \(a_i\le a_{i+1}\) 的条件。
同理可以推出,当 \(a_{i+1}\le a_{i}\) 时,需要满足 \(x\ge \left \lceil \frac{a_i+a_{i+1}}{2} \right \rceil\) 的条件。
如果存在一个 \(x\) 可以满足使最后的序列 sorted,那么必然满足 \(x\) 大于最大的下界且小于最小的上界。
代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 |
|
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
|