HDU2056 Rectangles 【矩形面积交】

Rectangles

Time Limit: 1000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)

Total Submission(s): 15950    Accepted Submission(s): 5104

Problem Description

Given two rectangles and the coordinates of two points on the diagonals of each rectangle,you have to calculate the area of the intersected part of two rectangles. its sides are parallel to OX and OY .

Input

Input The first line of input is 8 positive numbers which indicate the coordinates of four points that must be on each diagonal.The 8 numbers are x1,y1,x2,y2,x3,y3,x4,y4.That means the two points on the first rectangle are(x1,y1),(x2,y2);the
other two points on the second rectangle are (x3,y3),(x4,y4).

Output

Output For each case output the area of their intersected part in a single line.accurate up to 2 decimal places.

Sample Input

1.00 1.00 3.00 3.00 2.00 2.00 4.00 4.00
5.00 5.00 13.00 13.00 4.00 4.00 12.50 12.50

Sample Output

1.00
56.25

找出重叠矩形的左下右上坐标,代码有些乱

#include <stdio.h>
#include <math.h>

struct Node {
	double x1, y1, x2, y2;
} p1, p2;

double min(double a, double b) { return a < b ? a : b; }
double max(double a, double b) { return a > b ? a : b; }
void swap(double& a, double& b) { double t = a; a = b; b = t; }

int main() {
	freopen("stdin.txt", "r", stdin);
	double x1, y1, x2, y2;
	while (scanf("%lf%lf%lf%lf%lf%lf%lf%lf", &p1.x1, &p1.y1, &p1.x2, &p1.y2, &p2.x1, &p2.y1, &p2.x2, &p2.y2) != EOF) {
		x1 = min(p1.x1, p1.x2);
		x2 = max(p1.x1, p1.x2);
		y1 = min(p1.y1, p1.y2);
		y2 = max(p1.y1, p1.y2);
		p1.x1 = x1;
		p1.y1 = y1;
		p1.x2 = x2;
		p1.y2 = y2;

		x1 = min(p2.x1, p2.x2);
		x2 = max(p2.x1, p2.x2);
		y1 = min(p2.y1, p2.y2);
		y2 = max(p2.y1, p2.y2);
		p2.x1 = x1;
		p2.y1 = y1;
		p2.x2 = x2;
		p2.y2 = y2;

		x1 = max(p1.x1, p2.x1);
		y1 = max(p1.y1, p2.y1);
		x2 = min(p1.x2, p2.x2);
		y2 = min(p1.y2, p2.y2);	

		printf("%.2lf\n", x1 >= x2 || y1 >= y2 ? 0.0 : (x2 - x1) * (y2 - y1));
	}
	return 0;
}
时间: 2024-08-01 00:03:42

HDU2056 Rectangles 【矩形面积交】的相关文章

[BASIC-18] 矩形面积交

基础练习 矩形面积交 时间限制:1.0s   内存限制:512.0MB 问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入格式 输入仅包含两行,每行描述一个矩形. 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示. 输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位. 样例输入 1 1 3 3 2 2 4 4 样例输出 1.00 分析: 1.需要注

蓝桥杯_基础练习《矩形面积交---26》

/* 基础练习 矩形面积交 问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们 给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入格式 输入仅包含两行,每行描述一个矩形. 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过 10^7的实数表示. 输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位. 样例输入 1 1 3 3 2 2 4 4 样例输出 1.00 */ //矩形的相交面积. #include<stdio.

基础训练 矩形面积交

矩形面积交 #include<iostream> #include<iomanip> using namespace std; int main(){ double m1, n1, m2, n2, a1, b1, a2, b2, d1=0, d2=0; cin>>m1>>n1>>m2>>n2>>a1>>b1>>a2>>b2; if(m1>m2) swap(m1, m2); if(n

基础练习 矩形面积交

时间限制:1.0s   内存限制:512.0MB 问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入格式 输入仅包含两行,每行描述一个矩形. 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示. 输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位. 样例输入 1 1 3 3 2 2 4 4 样例输出 1.00 hint:给你两个矩形的两个对角坐标,让

[CSP校内集训]矩形面积交(树状数组)

题意 给\(n\)个互不相交的矩形,再给\(m\)个询问,每次给一个矩形求它与这\(n\)个矩形的面积交 思路 自己写的太丑了导致DEBUG了一个半小时qwq 一对矩形的交可以拆分成二维前缀和形式下的矩形的交,于是变成判断16次矩形的交(不想画图...只想口胡) 这些矩形都有\(x_0=0,y_0=0\),即左下角为坐标原点,于是一个矩形可以只用右上角的坐标表示: 对于一个询问的矩形\((x,y)\)和另一个矩形\((x_i,y_i)\),它们的交为\(min(x,x_i)\times min(

【试题 基础练习 矩形面积交】最废的矩形相交面积解

问题描述 平面上有两个矩形,它们的边平行于直角坐标系的X轴或Y轴.对于每个矩形,我们给出它的一对相对顶点的坐标,请你编程算出两个矩形的交的面积. 输入格式 输入仅包含两行,每行描述一个矩形. 在每行中,给出矩形的一对相对顶点的坐标,每个点的坐标都用两个绝对值不超过10^7的实数表示. 输出格式 输出仅包含一个实数,为交的面积,保留到小数后两位. 样例输入 1 1 3 32 2 4 4 样例输出 1.00 import java.io.BufferedWriter; import java.io.

hdu1255(线段树——矩形面积交)

题目连接:http://acm.hdu.edu.cn/showproblem.php?pid=1255 题意:求N个矩形中,求被覆盖至少俩次的面积和 分析:覆盖两次即col[rt]>=2就好.一开始将线段pushdown到叶子节点,根据col[rt]>=2才pushup上来,差点超时了,其实可以lazy标志,整段更新的,只是没想到而已. 用sum[rt][0]表示该节点rt代表的线段被覆盖一次的长度之和,则 if(col[rt])sum[rt][0]=pos[r+1]-pos[l];//整段被

蓝桥杯 BASIC-18 矩形面积交(线段重叠)

[思路]:将各个边平行到x.y轴上,重叠部分相乘得面积.getLen中是两条线相交的各种判断.注意:因为输入一个矩形的两个点并没有说先输入左下再输入右上(测试数据也确实有先输入了右上),所以一定要两两排序.否则会出现a大于b的情况. [AC代码]: #include <iostream> #include <algorithm> #include <iomanip> #include <cstdio> #include <cstring> usi

蓝桥网试题 java 基础练习 矩形面积交

------------------------------------------------------------------------------------------- 思路见锦囊2 ------------------------------------------------------------------------------------------- 算法 1 import java.util.Scanner; 2 public class Main { 3 publ