免费公司注册网站吗,成都包装设计,wordpress友情链接,网站方案建设书观星
对于平面上有n个点分为三类#xff0c;要求寻找一个三角形#xff0c;三个顶点分别属于这三类#xff0c;求解最大面积。 N3000
首先考虑到O(n2)O(n^2)O(n2)的枚举#xff0c;然后对于另外一种考虑这个点的位置#xff0c;显然它应该在凸包上#xff0c;因为我…观星
对于平面上有n个点分为三类要求寻找一个三角形三个顶点分别属于这三类求解最大面积。 N3000
首先考虑到O(n2)O(n^2)O(n2)的枚举然后对于另外一种考虑这个点的位置显然它应该在凸包上因为我们相当于要寻找距离某个直线最远的点所以相当于用一个直线来截。
然后考虑在凸包上二分首先如果直接求凸包斜率不是单调的没法二分或许可以三分。我们可以分别求出上凸包和下凸包分别找到最远点上凸包的斜率单增下凸包的斜率单减所以可以直接二分。
此时就不用极角排序了直接按照横坐标为第一关键字纵坐标为第二关键字排序即可然后利用单调栈求解。 需要注意一个细节就是横坐标相等的点只需要保留纵坐标最大或最小的所以需要判断一下
然后考虑求解面积多边形面积需要利用叉积求解就是前后相邻点叉积之和但是这样求出来的可能是负的所以需要加上绝对值。