A - Max Median:一道2100分数的题目,非常的简单
刚开始读错题目了,以为是贪心求最大的中位数,但是不是的,我们改变不了这k个数字的顺序,而且暴力肯定过不了,这个n是2e5 + 10;
本着万物可dp的原则以及我最近刷dp有点上头的原则,我们来想想是不是能用dp来思考这个题目:这个时间复杂度不允许啊,那还怎么用dp来做?
这个的时间复杂度是1e5,这个数字是典型的二分、整体二分来优化的题目:
做了不仅仅一个这样的高分段题目了,都是前缀和,真的该好好总结一下了,你真的懂前缀和?这个东西背后的意义有很多很多超级巧妙的东西。
这个题目最关键,也是最有意思的一点就是:
//这个题目最美 最动人的地方在于从k //开始遍历(最小长度为k),假设遍历到了 k+3,那么sum[k+3]-sum[0] //sum[k+3]-sum[1] … sum[k+3]-sum[3]都可以取用 //,我们想要使值尽可能大,只需取sum[1—3]中的最小值相减, //用一个数组维护前面前缀和的最小值即可。