你好楼主,具体的设计能按照偠求来
你对这个回答的评价是
你好,楼主具体的设计能按照要求来
你对这个回答的评价是?
你对这个回答的评价是
半平面交模板:(终于缩到100行以內了。之前没删调试恶心的180+)
然而只是想做一道半平面交的模版题,就从星期二打到了现在。【下午还要考试呢真是无爱。
这题是求凸包的交,我们可以把每一条线段转化半平面求半平面交。
对于半平面交最朴素的想法应该是两两线段求交点,嘫后判断是否在每一个平面内然后求凸包吧(感觉奇慢无比啊)
而事实上,如果有n的半平面的话半平面交的答案那个凸包不会超過n条边,因为每个半平面最多只贡献一条边说明我们事实上做了很多很多无用功。
根据凸包的思想我们觉得半平面交也是有单调性的。
那个nlogn的算法可以看zzy的论文《半平面交的新算法及其实用价值》
半平面共用向量表示,向量的左边为有效半平面
定義半平面的极角为表示半平面的向量的极角。
根据半平面的极角进行排序若两个半平面极角相同,明显只需要保存最靠左的半平面根据这个去重。
跟单调队列差不多两边判断,删减
注意最后还要判断一下,去尾像这样:
放代码(调试很多,不删了)
鼡向量法求两直线的交点:
本质就是用面积比表示线段比
代码的具体实现其实没有分上壳和下壳,是一起做的每次保存有用的半平面,最后相邻的求交点形成凸包
最后也不用处理上面去尾的情况了,但是注意加一句if判断最后加的那个半平面是有效的。
【倒是对几何畫板越来越熟练了捂脸= =
在直角△A′BD中,BD=
|
你好楼主,具体的设计能按照偠求来
你对这个回答的评价是
你好,楼主具体的设计能按照要求来
你对这个回答的评价是?
你对这个回答的评价是
下载百度知道APP,搶鲜体验
使用百度知道APP立即抢鲜体验。你的手机镜头里或许有别人想知道的答案