标签:des style color os io strong for ar
| Time Limit: 1000MS | Memory Limit: 10000K | |
| Total Submissions: 5301 | Accepted: 1662 | 
Description
Input
Output
Sample Input
5 1.5 1.5 2.0 1.0 1.0 2.0 2.0 1.75 2.0 1.0 3.0 0.0 2.0 5 1.5 1.5 2.0 1.0 1.0 2.0 2.0 1.75 2.5 1.0 3.0 0.0 2.0 1
Sample Output
HOLE IS ILL-FORMED PEG WILL NOT FIT
#include <iostream>
#include <cstdio>
#include <cstring>
#include <cmath>
#include <vector>
#include <algorithm>
using namespace std;
#define REP(_,a,b) for(int _ = (a); _ < (b); _++)
#define sz(s)  (int)((s).size())
typedef long long ll;
const double eps = 1e-10;
const int maxn = 50;
int n;
struct Point{
	double x,y;
	Point(double x=0.0,double y = 0.0):x(x),y(y){}
};
Point vP[maxn];
typedef Point Vector;
struct Line {
	Point P;
	Vector v;
	double ang;
	Line(){}
	Line(Point P,Vector v):P(P),v(v){
		ang = atan2(v.y,v.x);
	}
	bool operator <(const Line&L) const{
		return ang < L.ang;
	}
};
Line LX[maxn],LY[maxn];
Vector operator + (Vector A,Vector B) {
	return Vector(A.x+B.x,A.y+B.y);
}
Vector operator - (Vector A,Vector B){
	return Vector(A.x-B.x,A.y-B.y);
}
Vector operator * (Vector A,double p){
	return Vector(A.x*p,A.y*p);
}
Vector operator / (Vector A,double p){
	return Vector(A.x/p,A.y/p);
}
int dcmp(double x){
	if(fabs(x) < eps) return 0;
	else return x < 0? -1:1;
}
bool operator < (const Point &a,const Point &b){
	return dcmp(a.x-b.x) <0 || dcmp(a.x-b.x)==0&&dcmp(a.y-b.y)<0;
}
bool operator == (const Point &a,const Point &b){
	return dcmp(a.x-b.x)==0&& dcmp(a.y-b.y)==0;
}
double Dot(Vector A,Vector B) {return A.x*B.x+A.y*B.y;}
double Length(Vector A) {return sqrt(Dot(A,A));}
double Angle(Vector A,Vector B) {return acos(Dot(A,B)/Length(A)/Length(B));}
double Cross(Vector A,Vector B) {return A.x*B.y-A.y*B.x;}
Vector Rotate(Vector A,double rad) {return Vector(A.x*cos(rad)-A.y*sin(rad),A.x*sin(rad)+A.y*cos(rad)); }
Vector Normal(Vector A) {
	double L = Length(A);
	return Vector(-A.y/L,A.x/L);
}
bool OnSegment(Point p,Point a1,Point a2){
	return dcmp(Cross(a1-p,a2-p)) == 0 && dcmp(Dot(a1-p,a2-p)) < 0;
}
Point GetIntersection(Line a,Line b){
	Vector u = a.P-b.P;
	double t = Cross(b.v,u) / Cross(a.v,b.v);
	return a.P+a.v*t;
}
int ConvexHull(Point* p,int n,Point *ch){
	sort(p,p+n);
	int m = 0;
	for(int i = 0; i < n; i++) {
		while(m > 1 && dcmp(Cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])) <= 0) m--;
		ch[m++] = p[i]; 
	}
	int k = m;
	for(int i = n-2; i >= 0; i--){
		while(m > k && dcmp(Cross(ch[m-1]-ch[m-2],p[i]-ch[m-2])) <= 0) m--;
		ch[m++] = p[i];
	}
	if(n > 1) m--;
	return m;
}
double a[maxn];
void input(){
	double t;
	REP(i,0,n)	scanf("%lf",&a[i]);
	LX[0] = Line(Point(0,1.0),Vector(0,-1.0));
	REP(i,0,n){
		scanf("%lf",&t);
		LX[i+1] = Line(Point(t,1.0),Vector(a[i]-t,-1.0));
	}
	LX[n+1] = Line(Point(1.0,1.0),Vector(0,-1.0));
	LY[0] = Line(Point(1.0,0),Vector(-1.0,0));
	REP(i,0,n)	scanf("%lf",&a[i]);
	REP(i,0,n){
		scanf("%lf",&t);
		LY[i+1] = Line(Point(1.0,t),Vector(-1.0,a[i]-t));
	}
	LY[n+1] = Line(Point(1.0,1.0),Vector(-1.0,0));
}
void solve(){
	double ans = 0;
	REP(i,1,n+2) {
		Point a,b,c,d;
		REP(j,1,n+2) {
			a = GetIntersection(LX[i-1],LY[j-1]);
			//cout<<a.x<<" "<<a.y<<endl;
			b = GetIntersection(LX[i],LY[j-1]);
			//cout<<b.x<<" "<<a.y<<endl;
			c = GetIntersection(LX[i],LY[j]);
			d = GetIntersection(LX[i-1],LY[j]);
			double area = 0;
			area = fabs(Cross(a,b)/2+Cross(b,c)/2+Cross(c,d)/2+Cross(d,a)/2);
			ans = max(area,ans);
		}
		
	}
	printf("%.6f\n",ans);
}
int main(){
	
	while(~scanf("%d",&n) && n){
		input();
		solve();
	}
	return 0;
}POJ1584-A Round Peg in a Ground Hole(凸包,判圆在凸包内),布布扣,bubuko.com
POJ1584-A Round Peg in a Ground Hole(凸包,判圆在凸包内)
标签:des style color os io strong for ar
原文地址:http://blog.csdn.net/mowayao/article/details/38711965