hdu 1542 线段树之扫描线之面积并

点击打开链接

题意:给你n个矩形,求它们的面积,重复的不重复计算

思路:用线段树的扫描线完成,将X坐标离散化后,从下到上扫描矩形,进行各种处理,看代码注释把

#include 
#include 
#include 
#include 
#include 
using namespace std;
typedef long long ll;
const int maxn=1e3+10;
#define mm(a) memset(a,0,sizeof(a))
int num1[maxn*4];
double num[maxn*4],X[maxn*4];
struct edge{
    double l,r,h;
    int s;//s为1是下边,s为-1是上边
    edge(){};
    edge(double a,double b,double c,int d) : l(a),r(b),h(c),s(d){}
    bool operator<(const edge &n)const{
        return h>1;
    if(l<=t) update(l,r,add,le,t,node<<1);
    if(r>t) update(l,r,add,t+1,ri,node<<1|1);
    pushup(le,ri,node);
}
int main(){
    int n,t=1;
    while(scanf("%d",&n)!=-1){
        if(n==0) break;
        double a,b,c,d;
        int k=0;
        for(int i=0;i

你可能感兴趣的:(线段树&树状数组,数据结构,线段树)