博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu1255扫描线计算覆盖两次面积
阅读量:5247 次
发布时间:2019-06-14

本文共 1742 字,大约阅读时间需要 5 分钟。

总体来说也是个模板题,但是要开两个线段树来保存被覆盖一次,两次的面积

#include
#include
#include
using namespace std;#include
#define maxn 10000#define lson l,m,rt<<1#define rson m+1,r,rt<<1|1struct seg{ double l,r,h; int s; seg(){} seg(double l,double r,double h,int s):l(l),r(r),h(h),s(s){} bool operator<(const seg & a)const{ return h
=2){ len2[rt]=data[r+1]-data[l]; len1[rt]=0; } else if(cnt[rt]==1){ if(l==r) len2[rt]=0; else len2[rt]=len2[rt<<1]+len2[rt<<1|1]+len1[rt<<1]+len1[rt<<1|1]; len1[rt]=data[r+1]-data[l]-len2[rt]; } else { if(l==r) len1[rt]=len2[rt]=0; else { len1[rt]=len1[rt<<1]+len1[rt<<1|1]; len2[rt]=len2[rt<<1]+len2[rt<<1|1]; } } }void update(int L,int R,int c,int l,int r,int rt){ if(L<=l && R>=r){ cnt[rt]+=c; pushup(rt,l,r); return; } int m=l+r>>1; if(L<=m) update(L,R,c,lson); if(R>m) update(L,R,c,rson); pushup(rt,l,r);}void init(){ tot=m=0; memset(data,0,sizeof data); memset(len1,0,sizeof len1); memset(cnt,0,sizeof cnt); memset(len2,0,sizeof len2); }int main(){ int T,n; cin >> T; while(T--){ init(); scanf("%d",&n); for(int i=1;i<=n;i++){ double a,b,c,d; scanf("%lf%lf%lf%lf",&a,&b,&c,&d); data[tot]=a; segs[tot++]=seg(a,c,b,1); data[tot]=c; segs[tot++]=seg(a,c,d,-1); } sort(segs,segs+tot); sort(data,data+tot); m=unique(data,data+tot)-data; double ans=0; for(int i=0;i

 

转载于:https://www.cnblogs.com/zsben991126/p/9945097.html

你可能感兴趣的文章
try install gitlab ce at docker ce
查看>>
centos lamp笔记
查看>>
ssl checker
查看>>
Yii2 使用 npm 安装的包
查看>>
laravel 优化小记
查看>>
PHP 添加 跨域头
查看>>
centos httpd 重啓顯示 `httpd: apr_sockaddr_info_get() failed for`
查看>>
yii2 vendor/bower/jquery/dist not exist
查看>>
Anguarjs http 会先发送一次 Options 请求,
查看>>
cordova 插件发布到 npm
查看>>
学习 Apache FileMatchs 规则
查看>>
linux 将子文件夹的文件复制到 当前目录中
查看>>
新知道一个 端对端加密 Signal protocol
查看>>
Docker的镜像 导出导入
查看>>
wordpress 获取所有管理员的邮箱
查看>>
学习mysql水平分区和实践笔记
查看>>
Laravel Illuminate\Http\Exceptions\PostTooLargeException
查看>>
SQLSTATE[HY000]: General error: 1366 Incorrect string value
查看>>
phpStorm 激活
查看>>
win7 ss 启动缺少文件
查看>>