zoukankan      html  css  js  c++  java
  • ●POJ 3348 Cows

    题链:

    http://poj.org/problem?id=3348

    题解:

    计算几何,凸包,多边形面积

    好吧,就是个裸题,没什么可讲的。

    代码:

    #include<cmath>
    #include<cstdio>
    #include<cstring>
    #include<iostream>
    #include<algorithm>
    #define MAXN 10050
    using namespace std;
    const double eps=1e-8;
    int sign(double x){
    	if(fabs(x)<=eps) return 0;
    	return x<0?-1:1;
    }
    struct Point{
    	double x,y;
    	Point(double _x=0,double _y=0):x(_x),y(_y){}
    	void Read(){scanf("%lf%lf",&x,&y);}
    };
    typedef Point Vector;
    bool operator < (Point A,Point B){return sign(A.x-B.x)<0||(sign(A.x-B.x)==0&&sign(A.y-B.y)<0);}
    bool operator == (Point A,Point B){return sign(A.x-B.x)==0&&sign(A.y-B.y)==0;}
    Vector operator + (Vector A,Vector B){return Vector(A.x+B.x,A.y+B.y);}
    Vector operator - (Point A,Point B){return Vector(A.x-B.x,A.y-B.y);}
    double operator ^ (Vector A,Vector B){return A.x*B.y-A.y*B.x;}
    Point D[MAXN],H[MAXN];
    int Andrew(int dnt){
    	int hnt=0,k=0;
    	sort(D+1,D+dnt+1);
    	dnt=unique(D+1,D+dnt+1)-D-1;
    	for(int i=1;i<=dnt;i++){
    		while(hnt>1&&sign((H[hnt]-H[hnt-1])^(D[i]-H[hnt-1]))<=0) hnt--;
    		H[++hnt]=D[i];
    	} k=hnt;
    	for(int i=dnt-1;i>=1;i--){
    		while(hnt>k&&sign((H[hnt]-H[hnt-1])^(D[i]-H[hnt-1]))<=0) hnt--;
    		H[++hnt]=D[i];
    	}
    	return hnt;
    }
    double GCPA(int hnt){//Get_Convex_Polygon_Area
    	double S=0;
    	for(int i=1;i<hnt;i++) S+=(H[i]^H[i+1])/2;
    	return S;
    }
    int main(){
    	int N; scanf("%d",&N);
    	for(int i=1;i<=N;i++) D[i].Read();
    	printf("%d",(int)(GCPA(Andrew(N))/50));
    	return 0;
    }
    

      

  • 相关阅读:
    Angularjs演示Service功能
    初始化应用程序数据ng-init指令
    AngularJs的ng-include的使用与实现
    把视图转换为字符串
    学习angularjs的内置API函数
    AngularJs自定义过滤器filter
    ASP.NET MVC的切片(Section)脚本(script)
    在ASP.NET MVC部署AngularJs
    MS SQL的某一数据库成了Single User模式
    AngularJs的MVC模式
  • 原文地址:https://www.cnblogs.com/zj75211/p/8227651.html
Copyright © 2011-2022 走看看