A

可以变为+1-1模型,做完。

有一个比较巧妙的点。

如何快速计算 $x,y,z$ 且 $+1-1$变成相等的点呢?

设 $p$ 为平均数,则为:$(|x-p|+|y-p|+|z-p|)/2$ 。

Submission #42216000 - AtCoder Regular Contest 158

B

你可以进行讨论,发现三个数字要么是负数中的最大值或最小值(或次或次次),要么是正数…(同理)。

排序完后直接取出这些数字,然后 $O(n^3)$ 暴力枚举即可。

Submission #42233273 - AtCoder Regular Contest 158

C

对每个位置排序然后双指针就行了。

我做复杂了。(悲

Submission #42228346 - AtCoder Regular Contest 158

D

官方做法

不会做。

顶级离谱,利用了指数差 $1$ 的性质。

概率的证明看不懂。

Submission #42233535 - AtCoder Regular Contest 158

民间做法

题解 [ARC158D] Equation - CQ 最菜 OIer - 洛谷博客 (luogu.com.cn)

挺离谱的一个思路。

补充一个证明:$x,y,z$ 互不相等。

$r≠1$ ,则只有 $y,z$ 可能想等,即:$-x=rx$ ,即$(r+1)=0$ ,所以 $r=p-1$ 。

所以只要 $r≠1,p-1$ 就可以使得三者不成立。

E

TMD,原来不是性质题,是算法题啊。

做法1

分治算法,排序差值,暴力开做。

时间复杂度:$O(n\log{n})$

做法2

类似题解 ARC158E All Pair Shortest Paths - 加油机的博客 - 洛谷博客 (luogu.com.cn)

但是用另外一个方式描述,不是构建最短路径树,而是找到了一种递推关系。

时间复杂度:$O(n\log{n})$

做法3

维护前面每个点到现在两个点的最短距离,考虑更新,就会发现更新的条件和那个差值有关,暴力修改,每一次额外的修改都会合并一个差值,所以 $O(n)$ 次。

同时因为插入的数字最多插在左右,所以只要用一个双端队列就可以 $O(n)$ 做了。

arc158e题解 - Tony2 的小窝 - 洛谷博客 (luogu.com.cn)

Submission #42235100 - AtCoder Regular Contest 158

F