摘要: 360K 172MS二分法和叉积代码如下#include<stdio.h>#include<string.h>#include<stdlib.h>int n,m;double x1,y1,x2,y2;struct point{ double x; double y;};struct T{ point a; point b;//a点在b点上方}line[5500];int res[5500];point temp;bool check(point p,T lin)//判断p点在lin的左方返回true,在lin的右方返回false{ double cc=(li 阅读全文
posted @ 2012-07-15 22:05 willzhang 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 不断添加圆,维护最小圆。如果添加的点i在圆内,不动,否则: 问题转化为求1~I的最小圆:求出1与I的最小圆,并且扫描j=2~(I-1),维护(1)+(i)+(2~j)的最小圆,如果找到J不在最小圆内,问题转化为:求(1~J)+(i)的最小圆。求出I与J的最小圆,继续扫描K=1~(j-1),找到不在最小圆内的,求出I J K三者最小圆,此时找到了(1~j)+(i)的最小圆,可以回到上一步(三点定一圆,所以1~(J-1)一定都在求出的最小圆上)。 这个做法复杂度是O(n)的,当加入圆的顺序随机时,因为三点定一圆,所以不在圆内概率是3/i,求出期望可得是On.以上是百度文库的内容,自己做了些删改以下 阅读全文
posted @ 2012-07-15 11:18 willzhang 阅读(228) 评论(0) 推荐(0) 编辑