zoukankan      html  css  js  c++  java
  • 51Nod2488 矩形并的面积

    Problem

    在二维平面上,给定两个矩形,满足矩形的每条边分别和坐标轴平行,求这个两个矩形的并的面积。即它们重叠在一起之后的总的面积。

    Solution

    这方法真神奇。。。

    Code

    #include<cstdio>
    #include<iostream>
    #include<algorithm>
    #include <iomanip>
    #include<map>
    #define io_opt ios::sync_with_stdio(false);cin.tie(0);cout.tie(0)
    #define ll long long
    const int MAXN=100020;
    using namespace std;
    struct Point{
        int x,y;
    };
    Point p[10];
    int iabs(int s){
        return s>0?s:-s;
    }
    bool tog(Point p1,Point p2,Point p3,Point p4){
        return (p1.x<=p3.x&&p1.y<=p3.y&&p2.x>=p4.x&&p2.y>=p4.y)||(p1.x>=p3.x&&p1.y>=p3.y&&p2.x<=p4.x&&p2.y<=p4.y);
    }
    int main(){
        io_opt;
        for(int i=1;i<=4;i++){
            cin>>p[i].x>>p[i].y;
        }
        int s1=(p[2].x-p[1].x)*(p[2].y-p[1].y),s2=(p[4].x-p[3].x)*(p[4].y-p[3].y);
        if(tog(p[1],p[2],p[3],p[4])){
            cout<<max(s1,s2);
            return 0;
        }
        ll s=s1;s+=s2;
        int a1=max(p[1].x,p[1].y);
        int b1=max(p[1].y,p[3].y);
        int a2=min(p[2].x,p[4].x);
        int b2=min(p[2].y,p[4].y);
        if(a1<a2&&b1<b2){
            cout<<s-(a2-a1)*(b2-b1)<<endl;
        }
        else{
            cout<<s<<endl;
        }
        return 0;
    }
    
  • 相关阅读:
    windows7 下 oracle 10g服务端如何安装?
    DOM模块支持测试
    获取css属性
    在webstorm启动nginx服务器
    获取link链接
    innerText
    外部动态加载javascript
    外部动态加载css
    冒泡排序
    Nodelist
  • 原文地址:https://www.cnblogs.com/sz-wcc/p/11488791.html
Copyright © 2011-2022 走看看