Graham_Scan 算法
说明:
Graham- Scan是一种灵活的凸包算法,其总的时间复杂度仅为0( nlog n)。Graham扫描法的原理是从点集中先找出一个最左下方的点,可以证明,这点肯定在凸包上,然后以这点为极点,将所有点根据与这点的极角排序,并且同时使用一个栈结构维护凸包上的点。按照极角序依次将点与栈顶的两个点作拐向判断:若右拐,则将当前点加人栈中;否则,将栈顶的点弹出。当遍历完点集后,还在栈中的点就是凸包上的点,而且依次出栈可以得到从起点开始顺时针旋转的所有凸包上的点。
struct point{
int x,y;
int id;
bool operator <(const point &u)const{
if(y==u.y) return x<u.x;
return y<u.y;
}
}p[N];//存储
int n,res