0%

51nod-2488-矩形面积并的面积

题目:
在二维平面上,给定两个矩形,满足矩形的每条边分别和坐标轴平行,求这个两个矩形的并的面积。即它们重叠在一起之后的总的面积。

输入
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
解法:判断长与宽重合边长即可。
代码:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
#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:最近一直在划水,做一些水题,慢慢提高难度吧。加油!!!