怎么做多次查询二维幺半群信息

标题叽里咕噜在说什么呢,我们要解决如下问题:

给定平面上若干个点 \((1,y_1),(2,y_2),\cdots,(n,y_n)\),保证 \(y\) 是一个 \(1\sim n\) 的排列,每个点上维护了信息,信息在第一维上呈现幺半群结构,第二维上无性质。多次查询一个子矩形,需要回答子矩形内的所有信息按第一维依次进行合并的结果。

经过和 xy 的讨论之后,做到了离线 \(O(n^{1.5})\) 时间,线性空间,在线时空间变为 \(O(n^{1.5})\)好吧这个做法完全是他想出来的,和我没关系

先来一个劣一点的做法,但比较自然。由于第一维的性质很好,所以考虑对第二维上手法,对其莫队,则有 \(O(n^{1.5})\) 次单点修改,\(O(n)\) 次查询,使用线段树可以做到 \(O(n^{1.5}\log n)\)。考虑稍微平衡一下,分块,对于每块使用线段树维护,查询时 \(O(1)\) 得到整块信息,这样是 \(O(n^{1.5}\log B+\frac{n^2}B+nB)\),不太会平衡。询问 lxl 后得知对于幺半群信息不存在 \(O(1)-O(\sqrt n)\) 的做法。空间 \(O(n)\),离线,被下面做法偏序。

分治做法的缺点主要在于第二维的限制过于难处理。考虑对第一维分块,此时注意到块内本质不同的第二维限制只有 \(O(B^2)\) 个,对于所有块的限制都处理出信息,这部分是 \(O(B^2\times\frac nB)=O(nB)\),总共可以做到 \(O(n^{1.5})\),在线。不过空间是 \(O(n^{1.5})\)。离线后逐块处理就是 \(O(n)\) 空间了。

不知道是否存在 \(\rm{polylog}\) 做法,不会归约。

posted @ 2026-01-14 13:58  BYR_KKK  阅读(19)  评论(0)    收藏  举报