POJ1118 Lining Up 计算几何

题意:给你一个二维坐标上的几个点,问在同一条直线上最多几个点。

思路:

N=700,刚开始我枚举两个点i,j。(两个点一条线),然后用k枚举一遍各个点。这样算出每条线上最多的点。

用了O(N^3)的超时了。我真是太天真了。

其实在枚举每个k的时候就可以想到。k明显有一些可以优化的地方。


优化:

之前是枚举每条线,现在是枚举每个点,对于每个点i,求i和其它所有点的斜率。

找出斜率相同点的个数。(用hash空间承受不来),所有用sort(O(nLOGn))即可找出。

所有现在是O(N^2*LOGN),200+ms。



posted on 2011-12-06 21:33  不是我干的  阅读(326)  评论(0)    收藏  举报