• zzuli 1816: 矩形 排序思维


    1816: 矩形

    Time Limit: 1 Sec  Memory Limit: 128 MB
    Submit: 179  Solved: 54

    SubmitStatusWeb Board

    Description

    小S和小D两个小雪参,在玩一个关于矩形的游戏以帮助他们学会怎么计算矩形的面积然后完成作业去打游戏(两个小雪参一起打游戏你怕不怕!)。他们约定每个人给出两个坐标,分别是两个矩形的左下角和右上角的坐标,他们的游戏规则很简单,就是看谁先找出来这两个矩形的覆盖的总面积大小。你的问题就是帮助他们给出正确答案。

    Input

    输入的第一行为一个整数T,代表样例的组数。

    每组样例包含4个坐标(x,y),( -100000000<= x,y <= 100000000 )前两个是小S给出的矩形左下角和右上角的坐标,后面两个是小D给出来的坐标。

    Output

    输出两个矩形覆盖的总面积大小。

    Sample Input

    3
    -2 -2 2 2 -2 -2 2 2
    0 0 1 1 0 0 2 2
    -2 -2 2 2 1 -3 3 -1

    Sample Output

    16
    4
    19
    代码:
    #include<iostream>
    #include<string>
    #include<vector>
    #include<queue>
    #include<stack>
    #include<map>
    #include<algorithm>
    #include<cstdio>
    #include<cstring>
    #include<cstdlib>
    #include<cmath>
    using namespace std;
    const int maxn=5;
    struct node {
        double num;
        int flag;
    }ansx[maxn],ansy[maxn];
    bool cmp(const node &a, const node &b) {
        return a.num<b.num;
    }
    int main() {
        int t;
        scanf("%d",&t);
        while(t--) {
            double x,y;
            for(int i=0;i<4;++i) {
                scanf("%lf%lf",&x,&y);
                ansx[i].num=x;ansy[i].num=y;
                if(i<=1) {
                    ansx[i].flag=-1;ansy[i].flag=-1;
                } else {
                    ansx[i].flag=1;ansy[i].flag=1;
                }
            }
            double area=0;
            area+=fabs(ansx[1].num-ansx[0].num)*fabs(ansy[1].num-ansy[0].num);
            area+=fabs(ansx[3].num-ansx[2].num)*fabs(ansy[3].num-ansy[2].num);
            sort(ansx,ansx+4,cmp);
            sort(ansy,ansy+4,cmp);
            double darea=0;
            if(ansx[0].flag+ansx[1].flag==0&&ansy[0].flag+ansy[1].flag==0) {
                double dx=fabs(ansx[1].num-ansx[2].num);
                double dy=fabs(ansy[1].num-ansy[2].num);
                darea=dx*dy;
            }
            area-=darea;
            printf("%.0lf
    ",area);
        }
        return 0;
    }
    


  • 相关阅读:
    Centos7yum安装LNMP
    CentOS7安装和配置rsync+inotify
    SSH
    nginx https
    nginx rewrite
    nginx代理缓存
    nginx动静分离
    Centos7使用squid实现正向代理
    利用tengine的nginx_upstream_check_module来检测后端服务状态
    nginx基于tcp负载均衡
  • 原文地址:https://www.cnblogs.com/lemonbiscuit/p/7775983.html
Copyright © 2020-2023  润新知