二维数点总结
有很多数数题都可以转化为二维数点模型。将一些二元信息视作平面上的若干个点,查询即数一个矩形中有多少个点/点的权值之和等信息。
那么这很明显是DS题(或者至少要上DS优化一下)。我们来想想怎么处理矩阵查询。
基础:扫描线
矩形面积并
扫描线从左往右扫,线段树维护扫描线上的信息,令一个矩形左侧的边权值为
线段树上一个位置的值不为
矩形面积交,矩形周长并,矩形周长交是类似的。这三个是口胡的。
广义扫描线
在二维平面上同样做一条扫描线来扫。可以维护的东西不止面积并。
很好的作用是把二维信息搞到一维上去了。
离线
离线的时候做法很多。
但基本都有一个共性:把询问差分,转化为前缀信息(在平面上反映出来的是以原点为一个顶点的矩形的信息)。
BIT/线段树
我们把询问差分之后,再按
我们将询问同样视作一个点(即以原点为一个顶点的矩形的不在坐标轴上的那个顶点)。将维护的DS视作一条竖直的扫描线,从左至右扫(从右至左也可以,只是差分方式和一些细节改一下,具体选择看数点部分以外的东西怎样方便实现)。
将扫到的点都加入DS中,再来处理扫描线扫到的询问。我们发现扫描线使得一个平面上的前缀信息在扫描线上对应着序列的前缀,于是直接查询DS的前缀信息即可回答询问。
写的时候注意常数问题,并且数清楚复杂度有几只
CDQ分治
不太会写,口胡一下。
同样差分询问,然后发现就是数
在线
使用一些高级数据结构就可以在线了。
树套树
显然是可以数清楚有多少个点的,就是难写,而且似乎比离线BIT多一只
KDT
这位更是重量级,但是我不会。
术业有专攻,KDT就是干这个的。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 地球OL攻略 —— 某应届生求职总结
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· 提示词工程——AI应用必不可少的技术
· .NET周刊【3月第1期 2025-03-02】