展示型网站制作公司,如何把品牌推广出去,手机在线建网站,培训校园网站建设简报题目链接#xff1a;http://www.lydsy.com:808/JudgeOnline/problem.php?id1845 给定100个三角形#xff0c;求三角形面积并。 戴神模板太可怕。直接调用函数秒掉。思路有点繁琐#xff0c;不大清楚。贴一个代码。 代码#xff1a; /* **********************************… 题目链接http://www.lydsy.com:808/JudgeOnline/problem.php?id1845 给定100个三角形求三角形面积并。 戴神模板太可怕。直接调用函数秒掉。思路有点繁琐不大清楚。贴一个代码。 代码 /* ***********************************************
Author :rabbit
Created Time :2014/7/3 22:46:38
File Name :2.cpp
************************************************ */
#pragma comment(linker, /STACK:102400000,102400000)
#include stdio.h
#include iostream
#include algorithm
#include sstream
#include stdlib.h
#include string.h
#include limits.h
#include string
#include time.h
#include math.h
#include queue
#include stack
#include set
#include map
using namespace std;
#define INF 0x3f3f3f3f
#define eps 1e-8
#define pi acos(-1.0)
typedef long long ll;
int dcmp(double x){if(fabs(x)eps)return 0;return x0?1:-1;
}
struct Point{double x,y;Point(double _x0,double _y0){x_x;y_y;}
};
Point operator (Point a,Point b){return Point(a.xb.x,a.yb.y);
}
Point operator - (Point a, Point b){return Point(a.x-b.x,a.y-b.y);
}
Point operator * (Point a,double p){return Point(a.x*p,a.y*p);
}
Point operator / (Point a,double p){return Point(a.x/p,a.y/p);
}
bool operator (const Point a,const Point b){return a.xb.x||(a.xb.xa.yb.y);
}
bool operator (const Point a,const Point b){return dcmp(a.x-b.x)0dcmp(a.y-b.y)0;
}
double Dot(Point a, Point b){return a.x*b.xa.y*b.y;
}
double Length(Point a){return sqrt(Dot(a,a));
}
double Angle(Point a,Point b){return acos(Dot(a,b)/Length(a)/Length(b));
}
double angle(Point a){return atan2(a.y,a.x);
}
double Cross(Point a,Point b){return a.x*b.y-a.y*b.x;
}
Point GetLineIntersection(Point p,Point v,Point q,Point w){Point up-q;double tCross(w,u)/Cross(v,w);return pv*t;
}
struct polygon{int n;Point p[100];double getarea(){double sum0;for(int i0;in;i){sumCross(p[i],p[(i1)%n]);}return fabs(sum)/2;}bool getdir(){double sum0;for(int i0;in;i)sumCross(p[i],p[(i1)%n]);if(dcmp(sum)0)return 1;return 0;}
};
struct polygons{vectorpolygon p;polygons(){p.clear();}void push(polygon q){if(dcmp(q.getarea()))p.push_back(q);}vectorpairdouble,int e;void ins(Point s,Point t,Point X,int i){double rfabs(t.x-s.x)eps?(X.x-s.x)/(t.x-s.x):(X.y-s.y)/(t.y-s.y);rmin(r,1.0);rmax(r,0.0);e.push_back(make_pair(r,i));}double polyareaunion(){double ans0;int c0,c1,c2;for(int i0;ip.size();i)if(p[i].getdir()0)reverse(p[i].p,p[i].pp[i].n);for(int i0;ip.size();i){for(int k0;kp[i].n;k){Point sp[i].p[k],tp[i].p[(k1)%p[i].n];if(!dcmp(Cross(s,t)))continue;e.clear();e.push_back(make_pair(0.0,1));e.push_back(make_pair(1.0,-1));for(int j0;jp.size();j)if(i!j){for(int w0;wp[j].n;w){Point ap[j].p[w];Point bp[j].p[(w1)%p[j].n];Point cp[j].p[(w-1p[j].n)%p[j].n];c0dcmp(Cross(t-s,c-s));c1dcmp(Cross(t-s,a-s));c2dcmp(Cross(t-s,b-s));if(c1*c20)ins(s,t,GetLineIntersection(s,t-s,a,b-a),-c2);else if(!c1c0*c20)ins(s,t,a,-c2);else if(!c1!c2){int c3dcmp(Cross(t-s,p[j].p[(w2)%p[j].n]-s));int dpdcmp(Dot(t-s,b-a));if(dpc0)ins(s,t,a,dp0?c0*((ji)^(c00)):-(c00));if(dpc3)ins(s,t,b,dp0?-c3*((ji)^(c30)):c30);}}}sort(e.begin(),e.end());int ct0;double tot0,last;for(int j0;je.size();j){if(ct1)tote[j].first-last;cte[j].second;laste[j].first;}ansCross(s,t)*tot;}}return fabs(ans)/2;}
};
int main()
{//freopen(data.in,r,stdin);//freopen(data.out,w,stdout);int n;while(~scanf(%d,n)){polygons ps;double ans0;for(int i0;in;i){polygon p1;p1.n3;for(int j0;jp1.n;j){scanf(%lf%lf,p1.p[j].x,p1.p[j].y);}ps.push(p1);}printf(%.2f\n,ps.polyareaunion());}return 0;
}转载于:https://www.cnblogs.com/xfgnongmin/p/10632720.html