帮 大一学弟 AC一道题
题意:
给出能够构成矩形的2组顶点(8个坐标点),构思两个矩形的各种位置关系,求出两个矩形在二维平面的覆盖面积
思路:
模拟+分类讨论,没有公共部分就算面积和,有公共部分就要减去多算的
代码:
#include <bits/stdc++.h>
using namespace std;
double a[4],b[4];
double ax,ay,bx,by,Ax,Ay,Bx,By;
int main(){
cin >> ax >> ay >> bx >> by >> Ax >> Ay >> Bx >> By;
a[0]=ax; a[1]=bx; a[2]=Ax; a[3]=Bx;
b[0]=ay; b[1]=by; b[2]=Ay; b[3]=By;
double width = *max_element(a,a+4) - *min_element(a,a+4);
double hight = *max_element(b,b+4) - *min_element(b,b+4);
double x = abs(bx-ax) + abs(Ax-Bx) - width;
double y = abs(by-ay) + abs(Ay-By) - hight;
double s = abs(bx-ax)*abs(by-ay) + abs(Ax-Bx)*abs(Ay-By);
if(x<=0||y<=0) printf("%.0lf\n",s);
else printf("%.0lf\n",s-x*y);
return 0;
}