HDOJ 2056 Rectangles

简介: 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. 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 1907
这是一道博弈的题,准确说是尼姆博弈,只要判断各项的异或值即可。
34 0
|
Java 数据安全/隐私保护
HDOJ 2100 Lovekey
HDOJ 2100 Lovekey
98 0
HDOJ 1323 Perfection(简单题)
HDOJ 1323 Perfection(简单题)
121 0
|
安全
HDOJ 2022 海选女主角
HDOJ 2022 海选女主角
152 0
HDOJ 1303 Doubles(简单题)
Problem Description As part of an arithmetic competency program, your students will be given randomly generated lists of from 2 to 15 uniq...
983 0
HDOJ 2802 F(N)
Problem Description Giving the N, can you tell me the answer of F(N)? Input Each test case contains a single integer N(1
718 0
HDOJ 2041 超级楼梯
Problem Description 有一楼梯共M级,刚开始时你在第一级,若每次只能跨上一级或二级,要走上第M级,共有多少种走法? Input 输入数据首先包含一个整数N,表示测试实例的个数,然后是N行数据,每行包含一个整数M(1
556 0
|
测试技术
HDOJ 2033 人见人爱A+B
Problem Description HDOJ上面已经有10来道A+B的题目了,相信这些题目曾经是大家的最爱,希望今天的这个A+B能给大家带来好运,也希望这个题目能唤起大家对ACM曾经的热爱。
959 0
|
人工智能 Java 测试技术
HDOJ 3784
继续xxx定律 Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others)Total Submission(s): 1238    Accepted Submission(s): 341 Problem Description 当n为3时,我们在验证xxx定律的过程中会得到一个序列,3,5,8,4,2,1,将3称为关键数,5,8,4,2称为覆盖数。
840 0