标签:向量 ide test order space cond target bit fun
首先肯定是构造一个完整的凸包包括所有的点,那么要使得刚好有两个点在外面,满足这个条件的只有三种情况。
1.两个在凸包上但是不连续的两个点。
2.两个在凸包上但是连续的两个点。
3.一个在凸包上,还有一个在这个点去掉后这段新凸包边上的一个点。
如何快速的截取新凸包的点是谁呢,我们可以将整个凸包划分区域,每个点删掉后,只可能在这块区域内选择新的点。那么我们就可以随机在凸包内部选择一个点,我使用的是凸包的重心作为坐标原点o,那么整个凸包移到原点处,然后在这个点的左侧和右侧的三角形区域内才是有可能构成新凸包边上的点,那我们只需要暴力枚举这部分内的点重构这条凸包边。那么第一第二种情况可以通过这个处理,第三种情况其实就是第一种情况套了第一种情况,那么就限暴力处理第一种情况的新凸包边,再在新凸包上继续分割三角区域,最后重构新凸包边中的新凸包边。
极角排序的时候细节处理有点坑,注意选择区域范围的角度相对大小,大型模拟题.... or
k点为重心
1 // ——By DD_BOND
2
3 //#include 4 //#include 5 //#include
6 #include 7 #include
8 #include 9 //#include
10 #include 11 #include 12 #include 13 #include 14 #include 15 #include 16 #include 17 #include 18 #include 19 #includestring>
20 #include 21 #include 22 #include 23 #include 24 #include 25 #include
Gym 101986D Making Perimeter of the Convex Hull Shortest(凸包+极角排序)
标签:向量 ide test order space cond target bit fun
原文地址:https://www.cnblogs.com/dd-bond/p/11622216.html