博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[LnOI2019]东京夏日相会
阅读量:4659 次
发布时间:2019-06-09

本文共 423 字,大约阅读时间需要 1 分钟。

这题做法真多。

做法一:直接圆上撒点,跑最小圆覆盖\(O(n*B)\),其中B为撒点数。
做法二:先对所有圆心跑最小圆覆盖,然后将最小圆的圆心与输入圆的靠外的交点作为点,跑最小圆覆盖,多迭代几次。复杂度玄学。
做法三:观察到x,y都是可以三分的,三分套三分,\(O(n log^2 C)\),C为值域。可能可以搞成一个log。
做法四:考虑直接对所有圆做最小圆覆盖,那么问题转化成对三个圆求外接圆。
这样出现了两种做法,一:二分半径,然后直接考虑扩大之后的圆交点有没有一个落在所有扩大之后的圆内。\(O(n log C)\)
二:解方程暴算圆心,事实证明表面上的三元二次方程,只需解一个一元二次方程即可。\(O(n)\)

当然这是假设对圆的最小圆覆盖随机化算法还是\(O(n)\)的情况下的,我也不知道他是不是\(O(n)\)的,但跑得挺快。

转载于:https://www.cnblogs.com/Yuhuger/p/10547233.html

你可能感兴趣的文章
[LeetCode][JavaScript]Plus One
查看>>
C语言-06复杂数据类型-01数组
查看>>
vue 图片预览插件
查看>>
深入解析:分布式系统的事务处理经典问题及模型
查看>>
python的2种字符串格式化输出
查看>>
Netsharp快速入门(之14) 销售管理(报表A 热销滞销品统计)
查看>>
配置 SQL Server Email 发送以及 Job 的 Notification通知功能
查看>>
Makefile 工程管理
查看>>
笔记本键盘失灵怎么办? 笔记本电脑按键失灵的一般解决办法
查看>>
寻找最大的数
查看>>
【转】java中float与byte[]的互转 -- 不错
查看>>
sockaddr和sockaddr_in的区别
查看>>
基础练习1
查看>>
左旋转字符串
查看>>
第二次C语言实验报告
查看>>
XPath轴
查看>>
Struts2的优点与Struts1的区别:
查看>>
5-29 删除字符串中的子串
查看>>
webdriver模拟鼠标操作
查看>>
Spring cloud 基础
查看>>