首页 > 其他分享 >计算几何

计算几何

时间:2024-11-06 20:57:05浏览次数:1  
标签:le frac 询问 分治 sqrt 计算 几何 区间

前几天看到一个看起来挺牛的数据随机下区间点对最优化的做法,没想到还真用上了。好像和官方题解不太一样,先记录一下。

题意是区间查询平面最近哈密顿距离点对。

先考虑一下全局查询怎么做。我们充分发扬人类智慧,每个点按 \(a\) 排序,然后从小到大枚举每个点,找下标距离它不超过 \(B\) 的点计算距离。事实表明取 \(B=20\) 就基本能算出最短距离了。复杂度 \(O(nB)\)。

然后考虑区间查询怎么做。考虑分治,假设当前分治区间 \([l,r]\),我们处理所有 \([l',r']\subseteq[l,r]\) 的询问。那么我们求出 \([l,r]\) 的最近点对 \([p,q]\),显然对于任意询问 \([l',r']\) 如果满足 \(l'\le p\le q\le r'\),那么答案显然就是 \(d(p,q)\)(\(d(x,y)\) 表示 \(x,y\) 的距离);否则 \([l',r']\) 要么属于区间 \([l,q]\),要么属于区间 \([p,r]\),直接分治下去计算答案(属于 \([p,q]\) 的部分随便选一边)即可。

加上小区间询问暴力平衡之后,理论复杂度似乎是 \(O(n^{1.4}B)\) 的。偷懒所以没加。

下面是坐标和询问区间均随机生成的复杂度证明(不带暴力平衡),不太严谨,理性愉悦即可:

由于询问一个长度为 \(l\) 的区间的概率为 \(\frac{l^2}{n^2}\),那么期望一个区间内的询问次数 \(\le \frac{l^2q}{n^2}\)。这里认为 \(n,q\) 同阶,那么 \(l\le \sqrt n\) 时我们就可以认为不会再向下分治了。

由于分治一层单个区间长度期望乘 \(\frac{2}{3}\),那么设期望递归层数为 \(t\),那么:

\[\left(\frac{2}{3}\right)^tn=\sqrt n \]

\[t=O(\log \sqrt n) \]

而递归一层之后所有区间的长度总和会乘 \(\frac{4}{3}\),所以:

\[T=\sum\limits_{i=0}^{t}\left(\frac{4}{3}\right)^t\cdot nB=O(Bn\sqrt n) \]

当然这个上界是远远达不到的,实测这个根号跑得和 \(\log\) 差不多快。

代码。

标签:le,frac,询问,分治,sqrt,计算,几何,区间
From: https://www.cnblogs.com/Ender32k/p/18531034

相关文章

  • 计算机考研C程序设计自命题必刷满分题型
    一、C程序的基本数据类型、基本算术运算、简单程序的设计题目:若有条件表达式(exp)?a++:b++;,则以下表达式中能完全等价于表达式(exp)的是()。选项:A.exp==0B.exp!=0C.exp==1D.exp!=1答案:D解释:条件表达式(exp)?a++:b++;意味着如果exp为真(非0),则执行a+......
  • 20241107,LeetCode 每日一题,使用 Go 计算两数相加
    思路模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法。每两个节点的值相加,并记录进位。逐节点相加:创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值,结果存储到新链表的节点中。计算过程中,将(l1.Val+l2.Val+carry)相加的......
  • 20241107,LeetCode 每日一题,使用 Go 计算两数相加
    思路模拟加法:链表存储的是逆序数位,因此从头节点开始,逐位相加可以模拟正常的加法。每两个节点的值相加,并记录进位。逐节点相加:创建一个新的链表,用于存储结果,每次将两个链表对应节点的值加上进位值,结果存储到新链表的节点中。计算过程中,将(l1.Val+l2.Val+carry)相加的结......
  • java计算机毕业设计最优网络购票系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景在当今信息化快速发展的时代,网络购票已经成为人们获取票务的主要方式之一。随着互联网技术的不断进步以及人们出行需求的日益增长,传统的购票方式......
  • 计算机网络常见面试题(一):TCP/IP五层模型、TCP三次握手、四次挥手,TCP传输可靠性保障、AR
    文章目录一、TCP/IP五层模型(重要)二、应用层常见的协议三、TCP与UDP3.1TCP、UDP的区别(重要)3.2运行于TCP、UDP上的协议3.3TCP的三次握手、四次挥手3.3.1TCP的三次握手3.3.2TCP的四次挥手3.3.3随机生成序列号的原因四、TCP传输可靠性保障4.1保证传输的......
  • java计算机毕业设计在线小说系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着互联网技术的飞速发展,数字阅读已经成为人们获取知识和娱乐的重要方式之一。在线小说作为数字阅读的重要组成部分,拥有庞大的用户群体。据相关......
  • 0基础学Python——面向对象-可迭代、面向对象-迭代器、call方法、call方法实现装饰器
    0基础学Python——面向对象-可迭代、面向对象-迭代器、call方法、call方法实现装饰器、计算函数运行时间面向对象--可迭代实现方法面向对象--迭代器实现方法call方法作用call方法实现装饰器代码演示计算函数运行时间代码演示面向对象–可迭代把对象看做容器,存储......
  • 【毕业设计】基于机器视觉的学生课堂行为检测 目标检测 深度学习 计算机视觉 yolo
    一、背景意义    随着教育技术的不断进步,课堂管理和学生行为分析逐渐成为教育研究的重要课题。传统的课堂观察方法往往依赖于教师的主观判断,不仅效率低下,而且容易受到观察者偏差的影响。基于机器视觉的学生课堂行为检测系统,利用深度学习和计算机视觉技术,能够实现对学生......
  • java计算机毕业设计基于的大学宿舍管理系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着大学教育的不断发展,高校规模日益扩大,学生数量不断增加,传统的宿舍管理方式面临着巨大的挑战。传统的手工登记和管理模式存在效率低下、信息容......
  • java计算机毕业设计最优网络购票系统(开题+程序+论文)
    本系统(程序+源码)带文档lw万字以上 文末可获取一份本项目的java源码和数据库参考。系统程序文件列表开题报告内容一、研究背景随着信息技术的飞速发展,网络购票系统在现代社会中的应用日益广泛。在交通、娱乐等多个领域,人们对于便捷、高效的购票方式需求不断增加。传统的购......