P4331 [BalticOI 2004] Sequence 数字序列
思路
转化序列
因为严格递增的条件不太好处理,可以试着转成非降
假设我们将
不难发现,当 (如果觉得很难发现就记下来这个结论,以后也能不难发现了)
于是就可以知道我们要用来处理的
但是绝对值之差不能改变,所以对应的
中位数的性质
结论
当
并不严谨的证明
几何上可以口胡一个证明
首先,必然需要一个交点,没有交点的话整体平移到一个交点可以使其更优
其次,一个显而易见的是,此时的
当选取一个点
合并
当两段全取中位数且相邻的区间
- 左边的每一个数都大于右边,此时要把答案转为整体的中位数
- 左边的每一个数都小于右边,此时直接放一起就好了,相当于没有合并
可以用可并堆来维护,每次合并完之后把元素弹到只剩长度
这个过程可以在一个栈里完成
时间复杂度