ARC158 赛后总结
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