二维数点问题
1|0二维数点问题
整体思路
将所有点按x值从小到大排序,那么查询满足特定条件的点的时候,可以转化为只对y值查询,由此,只需要遍历横坐标,并在遍历过程中用树状数组等数据结构维护对y的操作即可。
1|1P2163 [SHOI2007] 园丁的烦恼
题目链接:园丁的烦恼
题意
给n个点,m次询问,每次询问给出一个矩形,对于每次询问回答每个矩形里包含多少个点。不要求在线,
思路
由于是离线的,可以把每个矩形看成从
这样我们可以把矩形对应的四个点全部放到一个数组里,对其按从小到大排序即可(重载运算符,按横坐标从小到大,纵坐标从下到大排序)。
依次遍历排完序后每个矩阵的点,依次向树状数组中“小于”当前点的点的值加一,查询所有“小于”当前点的y值的点的个数,累加(或累减)到对应的第id次查询的答案中即可。
注意:由于树状数组的输入和查询是从1到x,而本题中的x和y是从0开始,因此需要把坐标都先加一。
由于y值只到1e7,所以可不进行离散化(该题测试数据比较水,测试集的y值最大似乎还不到5e5)
代码
1|2P3755 [CQOI2017] 老C的任务
原文链接:老C的任务https://www.luogu.com.cn/problem/P3755
题意
给n个点,每个点都有一个权值,有m个询问,每个询问一个矩形,问矩形内点的权值和为多少。不要求在线,
思路
跟上题的差别在于,这个题x,y坐标值范围更广,需要离散化,并且权值范围覆盖整个int取值范围,需要适当地用long long避免溢出。
这个题测试数据也很坑,n,m的范围写的是1e5,但是实测发现maxn需要改到3e5才对(也可能我写的有错误我没看到,如果有发现,可以评论,感谢指正)。而很明显容易出问题的数据范围方面,又没有测试点卡着,导致有的题解随便出个卡边界的数据就寄了,但是能过该题。
代码
__EOF__

本文链接:https://www.cnblogs.com/FlyingLight/p/17528313.html
关于博主:评论和私信会在第一时间回复。或者直接私信我。
版权声明:本博客所有文章除特别声明外,均采用 BY-NC-SA 许可协议。转载请注明出处!
声援博主:如果您觉得文章对您有帮助,可以点击文章右下角【推荐】一下。您的鼓励是博主的最大动力!
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· winform 绘制太阳,地球,月球 运作规律
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· 写一个简单的SQL生成工具
· AI 智能体引爆开源社区「GitHub 热点速览」