UVA

来源:互联网 发布:百知尚行 编辑:程序博客网 时间:2024/06/07 01:20

题意:给你n个矩形的中心和中心到边的距离让你求面积并

题解:套一下模板就好了

#include<cstdio>#include<iostream>#include<cstring>#include<algorithm>#include<cmath>using namespace std;const int maxn = 2e3+5; struct node{    double x1,x2,y;    int f;}E[2*maxn];double x[2*maxn];struct tree{    double l,r;    int flag;    int cover;}t[maxn*8];bool cmp(node a,node b){    return a.y < b.y;}void built(int i,int l,int r){    t[i].l = x[l],t[i].r = x[r];    t[i].cover = t[i].flag = 0;    if(l+1 >= r){        t[i].flag = 1;        return ;    }    int mid = (l+r)/2;    built(2*i,l,mid);    built(2*i+1,mid,r);}double update(int i,double l,double r,double y,int f){    if(t[i].flag){         if(t[i].r <= r && t[i].l >= l)            t[i].cover += f;        if(t[i].cover)            return t[i].r - t[i].l;        else{            return 0;        }    }    double s1 = update(2*i,l,r,y,f);    double s2 = update(2*i+1,l,r,y,f);    return s1+s2;}int main(){    int t = 1;    int n;    double x1,y1,r;    while(scanf("%d",&n) && n){        int m = 1;        int d = 0;        for(int i = 1; i <= n; i++){            scanf("%lf%lf%lf",&x1,&y1,&r);            if(fabs(r-0)<=1e-6){            d++;            continue;}            x[m-1] = E[m].x1 = E[m+1].x1 = x1-r;            x[m] = E[m].x2 = E[m+1].x2 = x1+r;            E[m].f = 1;            E[m+1].f = -1;            E[m+1].y = y1+r;            E[m].y = y1-r;            m += 2;        }        n-=d;        sort(x,x+2*n);        sort(E+1,E+1+2*n,cmp);        int k = 1;        for(int i = 1; i < 2*n; i++)            if(x[i] != x[i-1])                x[k++] = x[i];        built(1,0,k-1);        double area = 0;        for(int i = 1; i < 2*n; i++)            area += (E[i+1].y - E[i].y)*update(1,E[i].x1,E[i].x2,E[i].y,E[i].f);        printf("%d %.2lf\n",t++,area);    }    return 0;}


阅读全文
'); })();
0 0
原创粉丝点击
热门IT博客
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 武汉市二医院 乌鲁木齐二医院 坂田医院 第八人民医院 武汉第二医院 成都市第二人民医院地址 武汉二医院 成都二医院地址 武汉市第二医院 西北医院 中心医院地址 第2人民医院 二医院电话 第三附属医院 南京医科大学二附属医院 西安医学院第二附属医院 成都第四人民医院 深圳第一人民医院 河北医科大学第二医院 安徽医科大学第二附属医院 广州医科大学附属第二医院 山西医科大学第二医院 重庆医科大学附属第二医院 苏州大学附属第二医院 广州医科大学附属二医院 大连医科大学附属第二医院 南京医科大学第二附属医院 重庆医科大学附属二医院 西安交通大学第二附属医院 福建医科大学附属第二医院 温州医科大学附属第二医院 昆明医科大学第二附属医院 广西医科大学第二附属医院 天津医科大学第二医院 河北省医科大学第二医院 天津中医药大学第二附属医院 深圳市第一人民医院在哪里 深圳市第一人民医院预约挂号 哈尔滨医科大学附属第二医院 浙江大学医学院附属第二医院 二十七味舒眠贴