Cansult's blog

即使愿望永远无法实现
我也不愿就这样放手

0%

翻车笔记 最近群里出现的口嗨题

世界上最遥远的距离 不是生与死的距离 而是我和你一起睡裙,你却秒了我不会的题

矩形加 矩形求和

一开始以为不可做… = =因为不会合并标记

后来发现在标记永久化之后 标记实际上不是打在外层的点上 而是打在这个点的子树里

每次查询到外层的点的时候顺便查一下这个点挂着的子树 然后加上贡献就好了

AH的毒瘤题1

很搞笑 出题人都搞不懂题是啥意思(

然后还说这题可以开到\(\mathrm O(n)\) (注意flag

给一个序列 每个元素有两种属性 \(a \in \mathbb{Z}, b\in [0, 1] ​\), 要求对每一个子区间\([le,ri]\), 都求出\(\min(le, ri)\cdot \sum_{i = le}^{ri} [b_i = 0] \cdot \sum_{i = le}^{ri} [b_i = 1]​\)

首先很显然的是要对每一个数 都把他当做最小值 然后扩出一个区间\([le,ri]\)

\(f(i, j) = \sum_{i = le}^{ri} [b_i = 0] \cdot \sum_{i = le}^{ri} [b_i = 1]\), 我们就要求出\(\sum_{i \in [le, id]} \sum_{j \in [id, ri]} f(i, j)\)

一开始我以为这个玩意是个矩形嘛 他肯定木得办法一维的求啊 然后就被广东的高一大爷教育了 \[ \begin{aligned} &f(i, j) = (s0_j - s0_i) (s1_j - s1_i) \\ &\sum_{i \in [le, id]} \sum_{j \in [id, ri]} f(i, j) \\ &\sum_{i \in [le, id]} \sum_{j \in [id, ri]} (s0_j - s0_i) (s1_j - s1_i) \\ &\sum_{i \in [le, id]} \sum_{j \in [id, ri]} s0_j s1_j - s0_i s1_j - s0_j s1_i - s1_js0_i \end{aligned} \]

这么一看这题还真能\(\mathrm O(n)\)的做…

神仙学弟的神仙题

要求\(\mathrm O(n)\)左右的预处理出每个点作为次大值的最长区间

居然炸出来SDOI出题人了...你看就不像我等小透明就天天被踢

首先用单调栈求出来左边和右边比这个数大的位置 然后用二分主席树(?)

By 准备退役旅游的 Cansult