矩形面积
总时间限制:
5000ms
单个测试点时间限制:
1000ms
内存限制:
65536kB
描述
在二维平面中,由平行于坐标轴的线段所构成的矩形可以用其左下顶点和右上顶点坐标表示,如下图所示。
编写程序读入两个矩形的坐标信息,计算并输出二维平面中被两个矩形所覆盖的总面积。
输入:以空格分隔的8个整数,分别表示如上图所示的两个矩形的左下顶点和右上顶点的坐标(A, B)、(C, D)、(E, F)、(G, H)。假设没有输入错误。
输出:一个整数,表示所计算出来的面积
输入
以空格分隔的8个整数,分别表示如上图所示的两个矩形的左下顶点和右上顶点的坐标(A, B)、(C, D)、(E, F)、(G, H)。假设没有输入错误。
输出
一个整数,表示所计算出来的面积
样例输入
-3 0 3 4 0 -1 9 2
样例输出
45
方法:
投影水平和竖直方向求重叠段,计算重叠区域面积
# endcoding : UTF-8
"""
@author = 寻找任大侠
@email = renjx@stu.pku.edu.cn
@create_time = 2021/10/31 2:33
"""
def compute_area(a, b, c, d, e, f, g, h):
# 观察重叠段,例如横坐标方向,永远都是两个投影线段靠右边的的坐标最小值减去两个线段靠左边的最大
# 值,同理y坐标,再计算重叠段面积,不重叠则为0
x = max(0, min(c, g) - max(a, e))
y = max(0, min(d, h) - max(b, f))
return (c-a)*(d-b)+(g-e)*(h-f)-x*y
a, b, c, d, e, f, g, h = map(int,input().split())
print(compute_area(a, b, c, d, e, f, g, h))