zoukankan      html  css  js  c++  java
  • HDU-2056-Rectangles

    题目链接

    http://acm.hdu.edu.cn/showproblem.php?pid=2056

    题意  : 给你两个矩形,的两个点,每个矩形的两个点是这个矩形的对角线的两个点。

    把一个矩形的对角线的两个点经过如下变换

    即可化两点为左下,和右上的两个点。以便于解题。

    n1=min(x1,x2);      m1=min(y1,y2);
    n2=max(x1,x2);     m2=max(y1,y2);
    n3=min(x3,x4);      m3=min(y3,y4);
    n4=max(x3,x4);     m4=max(y3,y4);

    先排除不交的情况即

    if(n1>=n4||m1>=m4||n3>=n2||m3>=m2)
    printf("0.00 ");

    这四种情况;

    看代码

    #include<stdio.h>
    #include<iostream>
    using namespace std;

    int main(void)
    {
    double x1,x2,x3,x4,y1,y2,y3,y4;
    double n1,m1,n2,m2,n3,m3,n4,m4;
    double h,d,s;
    while(cin>>x1>>y1>>x2>>y2>>x3>>y3>>x4>>y4)
    {
    n1=min(x1,x2); m1=min(y1,y2);
    n2=max(x1,x2); m2=max(y1,y2);
    n3=min(x3,x4); m3=min(y3,y4);
    n4=max(x3,x4); m4=max(y3,y4);
    if(n1>=n4||m1>=m4||n3>=n2||m3>=m2)
    printf("0.00 ");
    else
    {
    d=min(m2,m4)-max(m3,m1);//求高;
    h=min(n2,n4)-max(n3,n1);//求宽;
    s=h*d;
    printf("%.2lf ",s);
    }
    }
    return 0;
    }

    思维问题,想明白再来做。实实在在。

  • 相关阅读:
    MySQL-基础知识整理
    设计模式-适配器模式
    MySQL
    MySQL-5.7 填坑
    MySQL
    Oracle
    SQL 注入
    Apache JMeter
    AppScan
    DNS 搜索
  • 原文地址:https://www.cnblogs.com/liudehao/p/4085072.html
Copyright © 2011-2022 走看看