codeforces 873E(枚举+rmq)

Posted 人活着就是为了Chelly

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了codeforces 873E(枚举+rmq)相关的知识,希望对你有一定的参考价值。

题意

  有n(n<=3000)个人参与acm比赛,每个人都有一个解题数,现在要决定拿金牌的人数cnt1,拿银牌的人数cnt2,拿铜牌的人数cnt3,各自对应一个解题数区间[d1,c1],[d2,c2],[d3,c3]

  现在要求:

    1、d1-c2尽可能大

    2、在1满足的前提下,d2-c3尽可能大

    3、在1,2满足的前提下,d3-num尽可能大(num表示铁牌第一名的解题数)

    4、对于任意的x,y(1<=x,y<=3),cntx<=2*cnty

  你需要给出一种每个人的奖牌分配来满足以上要求(1,2,3,-1分别表示金银铜铁)

分析

  一个直接的想法就是暴力枚举金银铜的线,然后去得到最优的结果,这样是$O(n^3)$的,会超时

  范围其实并不大,应该是可以$O(n^2)$解决的

  我们可以只枚举金牌线和银牌线,快速计算铜牌线应该在哪

  我们知道了cnt1和cnt2的值,于是就知道了cnt3的取值范围,就知道了铜牌线的区间[l,r]

  我们需要在这[l,r]内找一个k,使得a[k]-a[k+1]的值最大

  很容易想到求个差分数组,多次询问差分数组在[l,r]范围内的最大值,所以直接rmq

  时间复杂度$O(n^2)$

以上是关于codeforces 873E(枚举+rmq)的主要内容,如果未能解决你的问题,请参考以下文章

CodeForces 279C Ladder (RMQ + dp)

CodeForces - 1301E Nanosoft (dp+二维RMQ+二分)

AC日记——Periodic RMQ Problem codeforces 803G

Codeforces Round #422 (Div. 2) E. Liar 后缀数组+RMQ+DP

Codeforces Round #361 (Div. 2) D. Friends and Subsequences RMQ+二分

Codeforces Round #361 (Div. 2) D. Friends and Subsequences RMQ+二分