UVA LA2797 二分加半平面交,很巧妙的二分
发布日期:2021-10-08 15:48:54
浏览次数:14
分类:技术文章
本文共 1248 字,大约阅读时间需要 4 分钟。
二分真是个神奇的东西,又是一个二分题目,而且这题分析的半平面交也比较巧妙,本人智商不够,二分和半平面交均想不到,
并且这题二分为什么会对,本渣渣也不太明白,留着慢慢的明白吧。
分析:
如果敌人只有一颗炸弹,你会把总部建在哪里呢?对于每个点,炸掉它以后不会暴露在外面的区域是一条有向直线的”左边“。这让我们想到了什么?
没错,半平面交!综合考虑所有点,所以建总部的范围就是所有这些半平面的交。
如果敌人有俩颗炸弹,总部应该建在哪里呢?分析后发现,敌人最聪明的做法是炸掉俩个连续的顶点,而不是分散火力(想一想,为什么)。这样,
每两个连续顶点对应一个新的半平面,可以建总部的范围仍然是所有半平面的交。
有了上面的分析,整个问题迎刃而解:二分答案,用上述方法判断大难是否可行(也就是半平面交是否为非空)。二分需要O(logn)时间,半平面交需要
O(nlogn)时间,总时间复杂度为O(n^2logn).
代码:
#include#include #include #include #include #include #include #include #include #include
转载地址:https://blog.csdn.net/ONE_PIECE_HMH/article/details/45627323 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!
发表评论
最新留言
第一次来,支持一个
[***.219.124.196]2024年04月14日 03时00分21秒
关于作者
喝酒易醉,品茶养心,人生如梦,品茶悟道,何以解忧?唯有杜康!
-- 愿君每日到此一游!
推荐文章
Kotlin Vocabulary | 内联函数的原理与应用
2019-04-27
467_Arduino AD采集范围标定
2019-04-27
468_Arduino生成ASCII码表
2019-04-27
469_Arduino超声波距离传感器例程调试
2019-04-27
470_Arduino LCD驱动初步
2019-04-27
472_Arduino setup之前的工作分析
2019-04-27
473_Arduino.h内容分析
2019-04-27
478_Arduino telnet连接测试
2019-04-27
479_C语言sizeof知识点小结
2019-04-27
480_C语言编译链接结果文件分析
2019-04-27
481_C语言野指针
2019-04-27
482_C语言函数指针小结
2019-04-27
483_Windows Terminal中默认光标为小方块
2019-04-27
500_C语言判断一个字符是否是数字
2019-04-27
501_linux内核学习_skip_atoi函数分析
2019-04-27
503_linux内核学习_main函数分析
2019-04-27
504_linux内核学习___va_rounded_size宏分析
2019-04-27
505_linux内核学习_关于C语言函数的可变参数
2019-04-27
通过插件实现VIM编辑的自动补齐功能
2019-04-27
数学女孩儿中的数列问题
2019-04-27