题解:CF2057D Gifts Order
Statement
单点修改,全局查询所有 \([l,r]\) 中区间极差减去区间长度的最大值,多组数据。
Solution
首先,如果区间的最大 / 最小值出现在区间中间,区间长度的改变并不会对其造成影响,反之,当最大值出现在区间左右端点时,区间长度改变可能会产生影响。
在保证区间最大 / 最小值存在于区间端点同时需要保证区间长度最小,这样为最优方案。
设区间最小值在右端点,最大值在左端点,答案:
\[(a_l - a_r) - (r - l) = (a_l + l) - (a_r + r)
\]
最小值在左端点,最大值在右端,答案:
\[(a_r - a_l) - (r - l) = (a_r - r) - (a_l - l)
\]
我们令 \(x_i = a_i - i,y_i = a_i + i\),最后答案:
\[\max\{\max_{l<r}\{x_r - x_l\},\max_{l<r}\{y_l - y_r\}\}
\]
区间最大 / 最小值可以拿线段树维护,然后再维护一个答案即可。