题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3415
这题乍一看是区间最大子段和加上了长度的限制。
维护一个前缀和b[n],枚举i,对于当前i,显然最优解是b[i]-min(b[l]),其中i-k<= l <=i-1。
此时只需要能快速找出b[l]即可。
考虑每次只需要找到满足位置要求(l的要求)的之前一段到当前位置的最小值,我们可以用单调队列来维护这个最小值。
这里维护一个单增的单调队列,每次取最小值时从队首找到第一个符合位置要求的值即可。
1 |
|