题目: 在二维平面上,给定两个矩形,满足矩形的每条边分别和坐标轴平行,求这个两个矩形的并的面积。即它们重叠在一起之后的总的面积。
输入 8个数,分别表示第一个矩形左下角坐标为(A,B),右上角坐标为(C,D);第二个矩形左下角坐标为(E,F),右上角坐标为(G,H)。 保证A<C,B<D,E<G,F<H。 保证所有数的绝对值不超过2*10^9,矩形并的面积≤2*10^9。
输出 输出一个数表示矩阵并的面积。 输入样例 -3 0 3 4 0 -1 9 2 输出样例 45 解法:判断长与宽重合边长即可。 代码:
#include<algorithm>
using namespace std;
long long f(long long x1, long long x2, long long y1, long long y2)
{
if(x1 < y1)
{
if(y1 >= x2)
return 0;
else{
if(y2 >= x2)
return x2 - y1;
else
return y2 - y1;
}
}
else
{
if(x1 >= y2)
return 0;
else{
if(x2 >= y2)
return y2 - x1;
else
{
return x2 - x1;
}
}
}
}
int main()
{
long long x[4],y[4];
for(int i = 0; i < 4; i++)
scanf("%lld%lld", &x[i], &y[i]);
long long X = f(x[0],x[1],x[2],x[3]);
long long Y = f(y[0],y[1],y[2],y[3]);
long long ans = (x[1] - x[0])* (y[1] - y[0]) + (x[3] - x[2])* (y[3] - y[2]) - X*Y;
printf("%lld\n", ans);
}
PS:最近一直在划水,做一些水题,慢慢提高难度吧。加油!!!