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 2089 不要62
这题数据量相对比较小,可以暴力打表解决。不过我这里用数位dp 刚开始学数位dp,参考了别人的代码。
53 0
HDOJ 2075 A|B?
HDOJ 2075 A|B?
80 0
HDOJ 2040 亲和数
HDOJ 2040 亲和数
123 0
HDOJ 1214 圆桌会议
HDOJ 1214 圆桌会议
96 0
HDOJ 2013 蟠桃记
HDOJ 2013 蟠桃记
95 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...
985 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 ...
1827 0
HDOJ 2075 A|B?
Problem Description 正整数A是否能被正整数B整除,不知道为什么xhd会研究这个问题,来帮帮他吧。 Input 输入数据的第一行是一个数据T,表示有T组数据。
949 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称为覆盖数。
849 0