zoukankan      html  css  js  c++  java
  • 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

    参考链接:HDU  2056  (矩形重叠)Rectangles

    最终AC代码:

    #include <bits/stdc++.h>
    using namespace std;
    //难点在于判断是否有重叠!方法是:水平方向:取两个矩形左边大者记为a;
    //取两个矩形右边小者记为b;若a > b则说明没有重叠部分。 垂直方向同理! 
    int main()
    {
       double x1, y1, x2, y2, x3, y3, x4, y4;
       while(scanf("%lf %lf %lf %lf %lf %lf %lf %lf",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4)!=EOF)
       {
           //转换为正对角线坐标 因为测试用例可能输入副对角线的点 
           if(x1>x2) swap(x1, x2);
           if(y1>y2) swap(y1, y2);
           if(x3>x4) swap(x3, x4);
           if(y3>y4) swap(y3, y4);
           //找到重叠的部分 
           x1 = max(x1, x3); 
           y1 = max(y1, y3);
           x2 = min(x2, x4);
           y2 = min(y2, y4);
           printf("%.2lf
    ", (x1>x2||y1>y2)?0:(x2-x1)*(y2-y1));
        }
    }
  • 相关阅读:
    作为 务注册中心,Eureka比Zookeeper好在哪里?
    什么是 Ribbon负载均衡?
    Ribbon负载均衡能干什么?
    什么是feigin?它的优点是什么?
    Ribbon和Feign的区别?
    什么是Spring Cloud Bus?
    springcloud断路器作用?
    springcloud如何实现服务的注册?
    Eureka和Zookeeper区别?
    eureka自我保护机制是什么?
  • 原文地址:https://www.cnblogs.com/heyour/p/12575599.html
Copyright © 2011-2022 走看看