BZOJ 2006
题意:求序列区间和前$k$大的和。
我题意转化得不好。。我转化成求序列$k$个可重区间和的和,没有体现出本题的贪心思想
然后我们可以发现固定了区间的左端点,那么他的右端点是有固定取值集合的,即$[i+L-1, \min(i+R-1, n)], i+L-1 \leq n$
那么我们先把所有左端点的右端点取值集合弄出来,用ST表维护最大的右端点前缀和,那么这个区间就是最大值的候选答案,加到堆里
然后每次从堆中取出一个区间,加上和以后,删掉这个最优的右端点,继续放进堆作候选答案
当然也可以主席树来做,即每次更新就将那颗树的右端点位置赋值为无穷大,然后这个点不会再影响答案,线段树维护区间最大值即可。
或者直接查询$k$大
知识点
1、左端点的取值集合运用
2、区间和——前缀和