POI2008 Triangles
题目大意:
平面上有n个点,求出所有以这n个点为顶点的三角形的面积和。
($n \le 3000$)
题解:
首先可以明确,我们用向量的叉积来获得三角形的面积。
如果直接枚举三个点,分别算面积的话,复杂度为$O(n^3)$显然会TLE。
但由于向量叉积的符号有正有负,我们没法利用前缀和之类的技巧来优化。
于是,可以这样:
先把点从左到右排序一下,每次取最左边的一个点。
把该点与该点右边的点连出的向量全部记录下来。
那么接下来就是算这些向量两两的叉积。
为了避免正负号的干扰,我们首先将它们极角排序。
之后即可利用前缀和来优化了。
综上,总的时间复杂度为$O(n^2logn)$ 。
Code:
|
|