首先考虑区间[l,r]的长度小于L,那么就是区间最大值最小值,使用单调队列解决。
对于L≤r−l+1≤R:
首先二分答案ans,判断是否存在i,j满足aj−ai≥(j−i+k)ans
设[l,r]中的最大值在最小值后面即i<j。
令ci=ai−i∗ans,则有cj−ci≥k∗ans,求max{cj−ci}与k∗ans比较即可。
枚举i,问题转换成在[i+L−1,i+R−1]中求最大的cj。
发现其左右端点都随i单调,于是单调队列维护区间最值就可以解决。
对于最大值在最小值前面的情况,只要将c数组倒置,再做一次。
时间复杂度O(nlogn),期望100分。
AHOI D1T2 Solution
最新推荐文章于 2024-09-15 14:32:58 发布
