• QDU71 矩形


    题意很简单:

        给你两个平行于x轴的矩形的左下角和右上角的顶点坐标(全都是整数坐标),让你求这两个矩形所能覆盖的总面积大小(也就是两个矩形面积的并集)。

    输入的第一行为一个整数T,代表样例的组数。(T<=1000) 每组样例包含4个坐标(x,y),( -100000000<= x,y <= 100000000 )前两个是第一个矩形左下角和右上角的坐标,后面两个是第二个矩形的坐标。所有输入数据都是整数。

    每组样例对应一个数,表示两个矩形覆盖的总面积大小。

    复制
    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
    16
    4
    19

    这题是求两个矩形的面积并,因为只有两个矩形可以暴力乱搞,或者套一些成熟的算法比如考虑矩形切割思想或者比较麻烦的扫描线求矩形面积并。

    #include<cstdio>
    #include<cstdlib>
    #include<cstring>
    #include<algorithm>
    #include<cmath>
    using namespace std;
    long long  x[5],y[5];
    int main()
    {
        int t;
        long long x1,y1,x2,y2,x3,y3,x4,y4;
        scanf("%d",&t);
        while(t--)
        {
            scanf("%lld%lld%lld%lld%lld%lld%lld%lld",&x1,&y1,&x2,&y2,&x3,&y3,&x4,&y4);
            x[0]=x1;
            x[1]=x2;
            x[2]=x3;
            x[3]=x4;
            y[0]=y1;
            y[1]=y2;
            y[2]=y3;
            y[3]=y4;
            sort(x,x+4);
            sort(y,y+4);
            long long  s=(x2-x1)*(y2-y1)+(x4-x3)*(y4-y3);
            long long w=(x2-x1)+(x4-x3)-(x[3]-x[0]);
            long long h=(y2-y1)+(y4-y3)-(y[3]-y[0]);
            if(w<=0||h<=0)
            {
                printf("%lld
    ",s);
            }
            else
            {
                printf("%lld
    ",s-w*h);
            }
        }
        return 0;
    }
    
    
    
    
    
  • 相关阅读:
    JavaScript系列:JavaScript简介
    Fit自适应布局
    JavaScript数值类型及变量
    表格列Column
    JavaScript系列:ECMAScript引用类型
    Absolute绝对定位
    JavaScript系列:ECMAScript运算符
    JavaScript系列:ECMAScript类型转换
    jQuery Uploadify在ASP.NET MVC3中的使用
    JavaScript系列:ECMAScript语句
  • 原文地址:https://www.cnblogs.com/d-e-v-i-l/p/5097988.html
Copyright © 2020-2023  润新知