ST 表练习笔记
P2048 [NOI2010]超级钢琴
首先按照 前缀和最大值 建立 \(ST\) 表
对于每一个 \(i\) 维护一个以他为起始点的最大的 "超级和弦" (\(ST\) 表 \(O(1)\) 算)。
然后把这些值丢进一个优先队列里,每次取出最大的一个,然后按照其中最大值的位置 \(mid\) 把 \(l,r\) 分成 \(l,mid-1\) 和 \(mid+1,r\)。
然后 \(k\) 次计算即可。
CF713D Animals and Puzzle
首先做一个 \(dp\) 来表示从某个节点为左上端的最大正方形。
然后二分答案,问题变成了查询一个矩阵的 \(\max\) 值。这个可以用二维 \(ST\) 表来维护。