description
bobo 有乙個三角形和乙個矩形,他想求他們交的面積。
具體地,三角形和矩形由 8 個整數 x
1,y
1,x
2,y
2,x
3,y
3,x
4,y
4 描述。 表示三角形的頂點座標是 (x
1,y
1),(x
1,y2),(x
2,y
1), 矩形的頂點座標是 (x
3,y
3),(x
3,y
4),(x
4,y
4),(x
4,y
3).input
輸入包含不超過 30000 組資料。
每組資料的第一行包含 4 個整數 x
1,y
1,x
2,y
2 (x
1≠x
2,y
1≠y
2).第二行包含 4 個整數 x
3,y
3,x
4,y
4 (x
34,y
34).
(0≤x
i,y
i≤10
4)output
對於每組資料,輸出乙個實數表示交的面積。絕對誤差或相對誤差小於 10
-6 即認為正確。
sample input
1 1 3 30 0 2 2
0 3 3 1
0 0 2 2
4462 1420 2060 2969
4159 257 8787 2970
sample output
1.000000000.75000000
439744.13967527
hint
直接套多邊形相交面積模版就行了
#include#include#include#include#includeusing namespace std;
#define maxn 510
const double eps=1e-8;
int sig(double d)
struct point
point(double x,double y):x(x),y(y){}
bool operator==(const point&p)const
};double cross(point o,point a,point b)
double area(point* ps,int n)
n=0;
for(int i=0;i1&&p[n-1]==p[0])n--;
}double intersectarea(point a,point b,point c,point d);
int n=3;
polygon_cut(p,n,o,c);
polygon_cut(p,n,c,d);
polygon_cut(p,n,d,o);
double res=fabs(area(p,n));
if(s1*s2==-1) res=-res;return res;
}double intersectarea(point*ps1,int n1,point*ps2,int n2){
if(area(ps1,n1)<0) reverse(ps1,ps1+n1);
if(area(ps2,n2)<0) reverse(ps2,ps2+n2);
ps1[n1]=ps1[0];
ps2[n2]=ps2[0];
double res=0;
for(int i=0;i
CSU 1812 三角形和矩形
注意 點逆序可以用半平面交或者多邊形面積交 半平面交 至 include using namespace std define e exp 1.0 define mod 1000000007 define inf 0x3f3f3f3f typedef long long ll define inf ...
csu J 1812 三角形和矩形
submit page summary time limit 5 sec memory limit 128 mb submitted 7 solved 3 specialjudge bobo 有乙個三角形和乙個矩形,他想求他們交的面積。具體地,三角形和矩形由 8 個整數 x1,y1,x2,y2,x3...
ACM計算幾何 三角形問題
include struct point struct line double distance point p1,point p2 point intersection line u,line v 外心 point circumcenter point a,point b,point c 內心 p...