题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1255
题意:
给出N(N<=1000)个矩形,求至少被两个矩形的所覆盖的面积和。
思路:
和上篇博客 链接 求多个矩形面积交的思路很相像,那个是维护当前有效宽求面积并,这里只需将cnt[i]>=2的看做有效宽(因为cnt记录的是扫描线的覆盖情况,当某个区间被下底边至少覆盖了两次,那么这条边以上的面积是由至少两个以上的矩形交和而成)所以唯一的区别在于更新len(区间有效长度)时看cnt的情况。
代码:
#include<bits/stdc++.h>
#define lson l,mid,o<<1
#define rson mid+1,r,o<<1|1
#define N 2005
using namespace std;
int cnt[N<<2];
double len[N<<2];
double X[N<<1];
struct edge
{
double l,r,h;
int f;
edge() {}
edge(double l,double r,double h,int f):l(l