HDOJ 2056 Rectangles

简介: 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.

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

题目大意:求两个矩形相交的面积,矩形的边均平行于坐标轴。


import java.util.Scanner;

public class Main {

    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        while(sc.hasNext()){
            double[] x = new double[4];
            double[] y = new double[4];

            for(int i=0;i<x.length;i++){
                x[i] = sc.nextDouble();
                y[i] = sc.nextDouble();
            }

            if(x[1]<x[0]){
                double temp=x[0];
                x[0]=x[1];
                x[1]=temp;
            }
            if(y[1]<y[0]){
                double temp=y[0];
                y[0]=y[1];
                y[1]=temp;
            }

            if(x[3]<x[2]){
                double temp=x[3];
                x[3]=x[2];
                x[2]=temp;
            }

            if(y[3]<y[2]){
                double temp=y[3];
                y[3]=y[2];
                y[2]=temp;
            }


            double x1 = max(x[0],x[2]);
            double y1 = max(y[0],y[2]);
            double x2 = min(x[1],x[3]);
            double y2 = min(y[1],y[3]);

            if(x1>x2||y1>y2){
                System.out.println("0.00");
                continue;
            }else{
                System.out.printf("%.2f",(x2-x1)*(y2-y1));
                System.out.println();
            }


        }


    }

    private static double min(double d, double e) {
        if(d<e){
            return d;
        }
        return e;
    }

    private static double max(double d, double e) {
        if(d>e){
            return d;
        }
        return e;
    }

}
目录
相关文章
hdoj 4572 Bottles Arrangement
虽然不知道怎么做,但是AC还是没有问题的。 大概就是循环n次,从m加到m-n/2 除了最后一个数,每个都加两次。
46 0
HDOJ 1214 圆桌会议
HDOJ 1214 圆桌会议
105 0
HDOJ 1303 Doubles(简单题)
HDOJ 1303 Doubles(简单题)
109 0
|
机器学习/深度学习
HDOJ 2074 叠筐
HDOJ 2074 叠筐
127 0
|
Java 数据安全/隐私保护
HDOJ 2100 Lovekey
HDOJ 2100 Lovekey
106 0
HDOJ 2019 数列有序!
HDOJ 2019 数列有序!
140 0
HDOJ 1323 Perfection(简单题)
Problem Description From the article Number Theory in the 1994 Microsoft Encarta: “If a, b, c are integers such that a = bc, a is called a...
853 0
|
Java
HDOJ 1715 大菲波数
Problem Description Fibonacci数列,定义如下: f(1)=f(2)=1 f(n)=f(n-1)+f(n-2) n>=3。 计算第n项Fibonacci数值。 Input 输入第一行为一个整数N,接下来N行为整数Pi(1
872 0
HDOJ 2050 折线分割平面
Problem Description 我们看到过很多直线分割平面的题目,今天的这个题目稍微有些变化,我们要求的是n条折线分割平面的最大数目。比如,一条折线可以将平面分成两部分,两条折线最多可以将平面分成7部分,具体如下所示。
998 0
HDOJ 2034 人见人爱A-B
Problem Description 参加过上个月月赛的同学一定还记得其中的一个最简单的题目,就是{A}+{B},那个题目求的是两个集合的并集,今天我们这个A-B求的是两个集合的差,就是做集合的减法运算。
886 0

热门文章

最新文章