Loading

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\) 表来维护。

posted @ 2020-10-16 14:21  zhoukangyang  阅读(54)  评论(0编辑  收藏  举报