蓝桥-BASIC-18-矩形面积交
2017-06-01 15:35
225 查看
ACM模版
这个问题的解法很多种,我使用的就是一个公式,也是我加进库里的这个,把四个点的横纵坐标分别从小到大排序,然后相交的面积即为 (x3−x2)∗(y3−y2)。
其他方法就不多说了,毕竟方法多种多样,说起来实在累。
描述
题解
这个问题本身不难,不过让我充盈了 Liuctic 计算几何库,这个库我也不知道最开始是谁整理的,看着挺好的,就加进了我的计算几何模板中……这个问题的解法很多种,我使用的就是一个公式,也是我加进库里的这个,把四个点的横纵坐标分别从小到大排序,然后相交的面积即为 (x3−x2)∗(y3−y2)。
其他方法就不多说了,毕竟方法多种多样,说起来实在累。
代码
#include <cstdio> #include <algorithm> using namespace std; const int MAXN = 4; double x[MAXN]; double y[MAXN]; /* * x[]、y[]存储矩阵对角线顶点(只需要任意一条) */ double Area_of_overlap_rec(double x[], double y[]) { // 将两个矩形全部统一为主对角线 sort(x, x + 2); sort(x + 2, x + 4); sort(y , y + 2); sort(y + 2, y + 4); if (x[1] <= x[2] || x[0] >= x[3] || y[0] >= y[3] || y[1] <= y[2]) // 相离 { return 0.0; } else { sort(x, x + 4); sort(y, y + 4); return (x[2] - x[1]) * (y[2] - y[1]); } } int main() { for (int i = 0; i < 4; i++) { scanf("%lf%lf", &x[i], &y[i]); } printf("%.2lf\n", Area_of_overlap_rec(x, y)); return 0; }
参考
《Liuctic 计算几何库》相关文章推荐
- 蓝桥杯BASIC-18(矩形面积交)
- BASIC-18 VIP试题 矩形面积交
- [BASIC-18] - 矩形面积交 (Unsolved)
- BASIC-18 矩形面积交java版
- [BASIC-18] 矩形面积交
- BASIC18-21 矩形面积交 完美的代价 数的读法 Sine之舞
- 蓝桥杯 BASIC-18 基础练习 矩形面积交
- 蓝桥-BASIC-20 矩形面积交
- 蓝桥杯 BASIC-18 基础练习 矩形面积交
- 基础练习 BASIC-18 矩形面积交
- BASIC-18 / Tsinsen 1042 矩阵面积交(java)
- 18.矩形面积交
- 如何求两个向交矩形的交集的面积?
- 【hdu1542】线段树求矩形面积并
- 蓝桥之圆面积
- [LeetCode]—Largest Rectangle in Histogram 求直方图最大填充矩形面积
- 求两个矩形重叠部分的面积
- 矩形面积交
- HDU 1255 覆盖的面积 (扫描线 线段树 离散化 矩形面积并)
- rwkj 1357 矩形--面积-周长