题目描述
实现一个简单的绘图模块,支持在二维坐标系中绘制和擦除矩形。对于给定的一系列操作,要求计算最终图形的面积。绘制操作(d)将新矩形添加到当前图形中并与已存在的矩形进行合并,而擦除操作(e)则会从当前图形中移除与指定矩形重叠的部分。求最终面积
思路分析
为了解决这个问题,我们采用扫描线算法和区间处理的思路。具体步骤如下:
- 数据结构设计:
P3224.矩形绘制(200分)
题目内容
实现一个简单的绘图模块,绘图模块仅支持矩形的绘制和擦除
- 当新绘制的矩形与之前的图形重叠时,对图形取并集
- 当新擦除的矩形与之前的图形重叠时,对图形取差集
给定一系列矩形的绘制和擦除操作,计算最终图形的面积。
下面给出示例 1 和示例 2 的图示
示例 1 :

两步绘制的矩形如左侧所示,取并集后得到的图形如右侧所示
示例 2 :

第一步绘制的矩形在左侧用实线表示,第二步擦除的矩形在左侧用虚线表示,取差集后得到图像如右侧所示
输入描述
绘图模块采用二维坐标系,输入第一行位操作的数量 N ,接下来的 N 行格式为:
- d x1 y1 x2 y2,d 表示进行绘制操作,(x1,y1)为矩形左上角坐标,(x2,y2)为矩形右下角坐标
- e x1 y1 x2 y2,e 表示进行擦除操作,(x1,y1)为矩形左上角坐标,(x2,y2)为矩形右下角坐标
坐标为整数,且数据范围为 [−100,100],用例保证坐标有效
输出描述
输出最终图形的面积
样例1
输入
2
d 0 2 2 0
d -1 1 1 -1
输出
7
样例2
输入
2
d 0 2 2 0
e -1 1 1 -1
输出
3