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;
    }

}
目录
相关文章
|
12月前
hdoj 4572 Bottles Arrangement
虽然不知道怎么做,但是AC还是没有问题的。 大概就是循环n次,从m加到m-n/2 除了最后一个数,每个都加两次。
35 0
|
12月前
hdoj 1907
这是一道博弈的题,准确说是尼姆博弈,只要判断各项的异或值即可。
31 0
HDOJ 2802 F(N)
HDOJ 2802 F(N)
94 0
HDOJ 2802 F(N)
HDOJ 1412 {A} + {B}
HDOJ 1412 {A} + {B}
111 0
HDOJ 2075 A|B?
HDOJ 2075 A|B?
78 0
HDOJ 2019 数列有序!
HDOJ 2019 数列有序!
119 0
|
安全
HDOJ 2022 海选女主角
HDOJ 2022 海选女主角
150 0
HDOJ的题目分类
模拟题, 枚举 1002 1004 1013 1015 1017 1020 1022 1029 1031 1033 1034 1035 1036 1037 1039 1042 1047 1048 1049 1050 1057 1062 1063 1064 1070 1073 ...
1817 0