6.求点A相对一直线L的对面点B 首先得到AB的方程 根据A点坐标求出AB的方程 再求出AB与L的交点Y 接着就是A' = 2 * Y - X
7.求50000个点的最远距离 先用NlogN的算法求凸包 再枚举点距
8.判断一个点是否在一个多边形内 可以沿这个点做一条射线 然后判断这个点与其他边的交点的个数 如果是偶数则在外部 如果为奇数 则在里面 如果在边界 可以用点线距为0来判断
9.球坐标转化成立体坐标
double x = sin(lng/180*PI)*cos(lat/180*PI)*alt;
double y = cos(lng/180*PI)*cos(lat/180*PI)*alt;
double z = sin(lat/180*PI)*alt;
2.关于凸包的题目
gift-Wrapping算法复杂度O(n^2)很慢
Gram-Scan算法复杂度为O(NlogN) 但是极角序存在一些问题 所以最好写成水平序
Melkan算法是对于多边形的凸包算法 效率为O(N) 但是对于点集首先要用排序将其转化成多边形(复杂度为(NlogN)) 不实用
如果点是有限制的 比如0 <= x,y <= N 则可以现用maxy[x], miny[x]来保存纵坐标的最大值 和 最小值 显然只有这些点才可能出现在凸包上面 然后使用Graham-Scan算法按横坐标从小到大排序求凸包即可(蓝书P8) 这样排序的时间从nlogn 变成N
1.怎样由凸包上面的点确定最大的三角形面积?
枚举每一个点a
定下b点为a+1 c为a+2
移动c点直到面积不再增加(因为是凸多边形 故面积呈现先增后减序列)
移动b点在a,c之间 直到面积不再增加
刚刚看到的别人的学习札记,先copy过来再说,有时间再看看。