题解:P15589 [KTSC 2026] 瞭望塔 / Observation Tower
小清新分块题。
首先我们能很容易地看出来,对于一个人
感觉这些部分分都对正解没啥太大的启发意义,直接讲做法吧。
看到
对于操作 1,我们直接暴力先枚举其所在块的后缀散块更新。对于后面的整块我们发现只有整块内部的前缀最值有用,我们只把每个块的前缀最值提取出来,那么整块操作只会对这些人的一段后缀加一,直接打标记即可。
对于操作 2,散块先暴力下放标记,然后直接查询。整块直接维护答案和即可。
对于操作 3,整块修改不会影响块内的前缀最值,直接打标记。散块我们直接暴力下放所有标记然后重构前缀最值即可。
综上,我们的复杂度瓶颈在于操作 1 中找到每个整块操作的后缀,这个东西你直接做是需要二分的,所以不优化的复杂度是
我们相当于每个块我们每次需要查询第一个
综上时空都是
因为我也没有实现下面这种做法,有什么细节上的问题可以私信我。
代码写得太丑就不放了。
后记:std 怎么是 Polylog 的?