神奇的单调队列,用双端队列实现的 对每一列求单调队列,类似滑动窗口。 再对每一行求单点求列。 然后最大值最小值各扫一遍,最后相减求答案即可。 (能用单调性优化就别写数据结构吧
这道题我尝试过用一种很奇怪的线段树写,但是只过了三个点,其余tle了。
所以我用了另一种线段树写法。
先对每一行都建一棵线段树,然后将第 iii 行的从第 jjj 个数到第 j+n−1j+n-1j+n−1 个数中最大最小值存到 Maxi,jMax_{i,j}Maxi,j 和 Mini,jMin_{i,j}Mini,j 中,然后在对于每一列的 MaxMaxMax 和 MinMinMin 数组再建一个线段树,那就能求出每个 n×nn\times{n}n×n 的矩阵中最大数的值和最小数的值了。
当然这种做法并没有二维线段树更灵活。
By signing up a HFOJ universal account, you can submit code and join discussions in all online judging services provided by us.
Using your HFOJ universal account