• POJ1151 离散化求矩形面积的并


     1 /*第一道离散化的题目,虽然是水题,不过还是很高兴。。。*/
     2 
     3 #include<cstdio>
     4 #include<algorithm>
     5 #include<cstring>
     6 using namespace std;
     7 struct rect
     8 {
     9  double x1,x2,y1,y2;
    10 };
    11 #define max 103<<1
    12 rect a[max>>1];
    13 double x[max],y[max];
    14 bool flag[max][max];
    15 int n;
    16 double sum;
    17 
    18 void solve()
    19 {
    20  for(int i=0;i<n;i++)
    21  {
    22   for(int j=0;j<n<<1;j++)
    23   {
    24    if(x[j]>=a[i].x2)
    25     break;
    26    if(x[j]<a[i].x1)
    27     continue;
    28    for(int k=0;k<n<<1;k++)
    29    {
    30     if(y[k]>=a[i].y2)
    31      break;
    32     if(y[k]<a[i].y1)
    33      continue;
    34     flag[j][k]=true;
    35    }
    36   }
    37  }
    38  for(int i=0;i<n<<1;i++)
    39   for(int j=0;j<n<<1;j++)
    40   {
    41    if(flag[i][j])
    42     sum+=(x[i+1]-x[i])*(y[j+1]-y[j]);
    43   }
    44 }
    45 
    46 int main()
    47 {
    48  int k=1;
    49  while(~scanf("%d",&n)&&n)
    50  {
    51   int cnt=0;
    52   for(int i=0;i<n;i++)
    53   {
    54    scanf("%lf%lf%lf%lf",&a[i].x1,&a[i].y1,&a[i].x2,&a[i].y2);
    55    x[cnt]=a[i].x1;y[cnt]=a[i].y1;cnt++;
    56    x[cnt]=a[i].x2;y[cnt]=a[i].y2;cnt++;
    57   }
    58   sort(x,x+cnt);
    59   sort(y,y+cnt);
    60   sum=0;
    61   memset(flag,false,sizeof(flag));
    62   solve();
    63   printf("Test case #%d
    ",k++);
    64   printf("Total explored area: %.2lf
    
    ",sum);
    65  }
    66 }
    67  
  • 相关阅读:
    where T: class的解释
    调用钉钉的WebAPI接口实现与ERP数据的同步
    Json序列化和反序列化的方式
    Log4Net日志处理
    MVC项目中异常处理
    FindBI商业智能报表工具
    权限列表实现
    委托,匿名,lambda
    [经典贪心算法]贪心算法概述
    [zt]手把手教你写对拍程序(PASCAL)
  • 原文地址:https://www.cnblogs.com/Stomach-ache/p/3703275.html
Copyright © 2020-2023  润新知