zoukankan      html  css  js  c++  java
  • POJ3348——Cows(求凸包)

    快乐老家

    什么废话都不用说了吧,直接graham求凸包

    #include<cstdio>
    #include<algorithm>
    #include<cstring>
    #include<string.h>
    #include<iostream>
    #include<stdio.h>
    #include<cstdlib>
    using namespace std;
    int n,m;
    struct point{
        int x,y;
        point(){}
        point(int a,int b):
            x(a),y(b){}
        friend inline point operator -(const point &a,const point &b){
            return point(a.x-b.x,a.y-b.y);
        }
        friend inline int operator *(const point &a,const point &b){
            return a.x*b.y-a.y*b.x;
        }
        inline int calc()const{
            return x*x+y*y;
        }
    }p[10005],q[10005];
    inline bool comp(point a,point b){
        int res=(a-p[1])*(b-p[1]);
        if(res!=0) return res>0;//比较极角
        return (a-p[1]).calc()<(b-p[1]).calc();//极角相同比较长度(必须要短的在前,如果长的在前的话下面就必须把下面的弹出的条件改为>而不能有等于)
    }
    inline void graham(){
        int dat=1;
        for(int i=2;i<=n;i++){//找最左下角的点
            if(p[i].x<p[dat].x||(p[i].x==p[dat].x&&p[i].y<p[dat].y)){
                dat=i;
            }
        }
        if(dat!=1) swap(p[1],p[dat]);
        sort(p+2,p+1+n,comp);
        q[++m]=p[1];
        for(int i=2;i<=n;i++){
            while(m>=3&&(p[i]-q[m-1])*(q[m]-q[m-1])>=0)m--;//(这里>和>=没有区别,因为如果为0的话即共线,而现在是判断短的,加不加都不会对答案造成影响,如果短的在前的话就必须改为>)
            q[++m]=p[i];
        }
    }
    inline int  area(){
        int res=0;
        q[m+1]=q[1];
        for(int i=1;i<=m;i++){
            res+=q[i]*q[i+1];
        }
        return res/2;
    }
    int main(){
        cin>>n;
        for(int i=1;i<=n;i++) cin>>p[i].x>>p[i].y;
        graham();
        int ans=area()/50;
        cout<<ans<<'
    ';
    }
    
  • 相关阅读:
    hadoop再次集群搭建(3)-如何选择相应的hadoop版本
    48. Rotate Image
    352. Data Stream as Disjoint Interval
    163. Missing Ranges
    228. Summary Ranges
    147. Insertion Sort List
    324. Wiggle Sort II
    215. Kth Largest Element in an Array
    快速排序
    280. Wiggle Sort
  • 原文地址:https://www.cnblogs.com/stargazer-cyk/p/10366473.html
Copyright © 2011-2022 走看看