图形面积
图 形 面 积 图形面积 图形面积
题目链接:ssl 2880
题目
桌面上放了 N N N个平行于坐标轴的矩形,这 N N N个矩形可能有互相覆盖的部分,求它们组成的图形的面积。
输入
输入第一行为一个数 N N N,表示矩形的数量。下面 N N N行,每行四个整数,分别表示每个矩形的左下角和右上角的坐标。
输出
输出只有一行,一个整数,表示图形的面积。
样例输入
3
1 1 4 3
2 -1 3 2
4 0 5 2
样例输出
10
数据范围
1
≤
N
≤
100
1≤N≤100
1≤N≤100
坐标范围为
–
1
0
8
–10^8
–108到
1
0
8
10^8
108之间的整数。
思路
这道题我们用离散化来做。
就离散化
x
x
x轴和
y
y
y轴,然后枚举每一个离散化后的坐标,在矩阵内就加面积。
最后输出总面积,就可以了。
代码
#include<cstdio>
#include<algorithm>
#define ll long long
using namespace std;
ll n, x1[101], y1[101], x2[101], y2[101], x[201], y[201], ans, k;
int main() {
scanf("%lld", &n);//读入
for (ll i = 1; i <= n; i++) {
scanf("%lld %lld %lld %lld", &x1[i], &y1[i], &x2[i], &y2[i]);//读入
x[++k] = x1[i];//标记
y[k] = y1[i];
x[++k] = x2[i];
y[k] = y2[i];
}
sort(x + 1, x + k + 1);//离散化
unique(x + 1, x + k + 1);
sort(y + 1, y + k + 1);
unique(y + 1, y + k + 1);
for (ll i = 1; i < k; i++)//枚举坐标
for (ll j = 1; j < k; j++)
for (ll l = 1; l <= n; l++)//枚举矩阵
if (x[i] >= x1[l] && y[j] >= y1[l] && x[i + 1] <= x2[l] && y[j + 1] <= y2[l]) {//判断是否在矩阵内
ans += (x[i + 1] - x[i]) * (y[j + 1] - y[j]);//加面积
break;//找到了就枚举下一个坐标
}
printf("%lld", ans);//输出
return 0;
}
相关文章
- Qt5开发从入门到精通——第六篇二节( 图像与图片——基础图形的绘制 )
- GDI+绘制简单图形
- 【Opencv 系列】 第5章 画出基本图形以及显示文本
- 【Qt开发】在QLabel已经显示背景图片后绘制图形注意事项
- CorelDraw2022完整版图形平面设计
- GDI画图,判断鼠标点击点在某一画好的多边形、矩形、图形里
- FusionCharts简单教程---建立第一个FusionCharts图形
- 分布式监控系统Zabbix-图形集中展示插件Graphtree安装笔记
- C++习题 虚函数-计算图形面积
- 精品素材:15套免费的 Photoshop 自定义图形集
- CSS 魔法系列:纯 CSS 绘制基本图形(圆、椭圆等)
- win32开发(图形绘制)
- ON1 Effects图形工具领域,LUT和预设的色彩工作站
- 【图形基础篇】03 # 声明式图形系统:如何用SVG图形元素绘制可视化图表?
- halcon-dev_set_window激活图形窗口
- 2019-10-23-C#-从零开始写-SharpDx-应用-绘制基础图形
- 2018-9-1-win2d-画出好看的图形
- 2018-9-1-win2d-画出好看的图形
- WPF 使用 Direct2D1 画图 绘制基本图形