2020牛客暑期多校训练营(第二场) F Fake Maxpooling
这个题目本质是求,加入给一个长度为n的区间,求区间内,长度为k内的最大值是多少。因为题目时间限制,不能直接用线段树等。于是关于最大值我们思考到了单调栈。但是单调栈只能处理区间[0,r]的最大值。所以我们还需要移动左指针,保证区间长度是k。故使用双端队列。队列中单调递减。
队头保证在区间[r-k+1,r]中,队尾保证单调性正确。每一次取队头元素即可。
所以这道题我们预处理,先预处理n行,每一行中每一个点的区间最大值是多少,再计算每一列中,最大值是多少(使用行的最大值,这样只有k个)。
#include<
原创
2020-07-15 15:12:52 ·
119 阅读 ·
0 评论