zoukankan      html  css  js  c++  java
  • 矩形面积求并(codevs 3044)

    题目描述 Description

    输入n个矩形,求他们总共占地面积(也就是求一下面积的并)

    输入描述 Input Description

    可能有多组数据,读到n=0为止(不超过15组)

    每组数据第一行一个数n,表示矩形个数(n<=100)

    接下来n行每行4个实数x1,y1,x2,y1(0 <= x1 < x2 <= 100000;0 <= y1 < y2 <= 100000),表示矩形的左下角坐标和右上角坐标

    输出描述 Output Description

    每组数据输出一行表示答案

    样例输入 Sample Input
    2
    10 10 20 20
    15 15 25 25.5
    0
    样例输出 Sample Output
    180.00
    数据范围及提示 Data Size & Hint

    /*
      将所有正方形沿线切割成一个个小正方形,然后离散化。 
    */ 
    #include<iostream>
    #include<algorithm>
    #include<cstring>
    #include<cstdio>
    #define M 210
    using namespace std;
    double x[M],y[M],s[M][4];
    int xy[M][M];
    int n,cas=0;
    double sum;
    int main()
    {
        while(cin>>n)
        {   
            if(n==0)break;
            cas++;
            sum=0.0;
            memset(xy,0,sizeof(xy));
            for(int i=1;i<=n;i++)
            {
                cin>>s[i][0]>>s[i][1]>>s[i][2]>>s[i][3];
                x[i*2-2]=s[i][0];
                y[i*2-2]=s[i][1];
                x[i*2-1]=s[i][2];
                y[i*2-1]=s[i][3];
            }
            sort(x,x+2*n);
            sort(y,y+2*n);
            for(int k=1;k<=n;k++)
            {
                int x1,x2,y1,y2;
                for(x1=0;x1<2*n;x1++)
                  if(x[x1]==s[k][0])break;
                for(x2=0;x2<2*n;x2++)
                  if(x[x2]==s[k][2])break;
                for(y1=0;y1<2*n;y1++)
                  if(y[y1]==s[k][1])break;
                for(y2=0;y2<2*n;y2++)
                  if(y[y2]==s[k][3])break;
                for(int i=x1;i<x2;i++)
                  for(int j=y1;j<y2;j++)
                    xy[i][j]=1;
            }
            for(int i=0;i<2*n;i++)
              for(int j=0;j<2*n;j++)
                sum+=xy[i][j]*(x[i+1]-x[i])*(y[j+1]-y[j]);
            printf("%.2f
    ",sum);
        }
        return 0;
    }
    View Code
  • 相关阅读:
    BottomNavigationView3个项以上不显示文字的问题
    ViewPager中height=wrap_content无效,ScrollView里边用ListView显示不全解决办法
    Gson解析
    Parcelable Android SDK提供,基于内存,读写高于硬盘
    Serializable序列化 && 坑
    OpenStack中添加Floating IP
    Hadoop
    Redis
    ELK
    OpenStack
  • 原文地址:https://www.cnblogs.com/harden/p/5837979.html
Copyright © 2011-2022 走看看