codevs3044
codevs3044
大意:给出n个矩形求覆盖的总面积
看了hzwer的blog 似懂非懂 链接
可能还要多练点吧qaq
#include <bits/stdc++.h>
using namespace std;
#define N 10005
int n,m;
struct node{double x1,x2,y; int op;}line[N];
inline bool cmp(node a,node b){return a.y < b.y;}
double hash[N];
struct SegmentTree{int l,r,co; double sum;}Tree[N<<];
inline void pushup(int x)
{
int l=Tree[x].l,r=Tree[x].r;
if(Tree[x].co>)Tree[x].sum=hash[r+]-hash[l];
else if(l==r) Tree[x].sum=;
else Tree[x].sum=Tree[x<<].sum+Tree[x<<|].sum;
}
inline void build(int l,int r,int x)
{
Tree[x].l=l; Tree[x].r=r; Tree[x].co=;
if(l==r){Tree[x].sum=;return;}
int mid=(l+r)>>; build(l,mid,x<<); build(mid+,r,x<<|); pushup(x);
}
inline void updata(int l,int r,int x,int val)
{
if(l<=Tree[x].l&&Tree[x].r<=r){ Tree[x].co+=val; pushup(x); return;}
int mid=(Tree[x].l+Tree[x].r)>>;
if(l<=mid) updata(l,r,x<<,val); if(r>mid) updata(l,r,x<<|,val); pushup(x);
}
int main()
{
while(~scanf("%d",&n))
{
int i; double x1,y1,x2,y2,ans=; if(n==) break;
for(i=;i<=n;i++)
{
scanf("%lf%lf%lf%lf",&x1,&y1,&x2,&y2);
line[i*-].x1=line[i*].x1=x1;
line[i*-].x2=line[i*].x2=x2;
line[i*-].y=y1; line[i*-].op=-;
line[i*].y=y2; line[i*].op=;
hash[i*-]=x1; hash[i*]=x2;
}
n*=; sort(line+,line+n+,cmp); sort(hash+,hash+n+); m=unique(hash+,hash+n+)-hash-; build(,m,);
for(i=n;i>=;i--)
{
int l=lower_bound(hash+,hash+m+,line[i].x1)-hash,r=lower_bound(hash+,hash+m+,line[i].x2)-hash-;
updata(l,r,,line[i].op); ans+=(line[i].y-line[i-].y)*Tree[].sum;
}
printf("%.2lf\n",ans);
}
}
codevs3044的更多相关文章
- [codevs3044][POJ1151]矩形面积求并
[codevs3044][POJ1151]矩形面积求并 试题描述 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行一个数n ...
- codevs3044 线段树+扫描线
3044 矩形面积求并 http://hzwer.com/879.html 扫描线 // #pragma comment(linker, "/STACK:1024000000,1024000 ...
- [codevs3044]矩形面积求并
题目描述 Description 输入n个矩形,求他们总共占地面积(也就是求一下面积的并) 输入描述 Input Description 可能有多组数据,读到n=0为止(不超过15组) 每组数据第一行 ...
- 2017年暑假ACM集训日志
20170710: hdu1074,hdu1087,hdu1114,hdu1159,hdu1160,hdu1171,hdu1176,hdu1010,hdu1203 20170711: hdu1231, ...
随机推荐
- 基于webpack+react+antd 项目构建
工欲善其事必先利其器,学习React也是如此. 下面分享一篇基于webpack+react+antd 项目构建的好文章, https://blog.hduzplus.xyz/articles/2017 ...
- Apache Spark 2.2.0新特性介绍(转载)
这个版本是 Structured Streaming 的一个重要里程碑,因为其终于可以正式在生产环境中使用,实验标签(experimental tag)已经被移除.在流系统中支持对任意状态进行操作:A ...
- 朱晔和你聊Spring系列S1E7:简单好用的Spring Boot Actuator
阅读PDF版本 本文会来看一下Spring Boot Actuator提供给我们的监控端点Endpoint.健康检查Health和打点指标Metrics等所谓的Production-ready(生产环 ...
- wtf_1234
好无聊啊,今天困的厉害. 不想做任何事情 wtf bitch!
- python 跨域处理方式
因为浏览器的同源策略限制,不是同源的脚本不能操作其他源下面的资源,想操作另一个源下面的资源就属于跨域了,这里说的跨域是广义跨域,我们常说的代码中请求跨域,是狭义的跨域,即在脚本代码中向非同源域发送ht ...
- windows安装Redis和客户端
一.Windows安装Redis 1.下载安装包Redis-x64-3.0.504.zip到本地 2.解压 3.打开CMD,切换到解压后的redis目录,然后 C:\Users\Administrat ...
- SQL Server(2000,2005,2008):恢复/回滚时间比预期长(译)
我已经讨论了各种确定恢复状态的方法,但是本周我参与了一个围绕回滚的有趣讨论.交易已经运行了14个小时,然后发出了KILL SPID.SPID进入回滚,并发生2天和4小时. 自然的问题是为什么不14小时 ...
- 网络编程-C/S架构
什么是C/S架构 C指的是client(客户端软件),S指的是Server(服务端软件),本章的重点就是教大家写一个C/S架构的软件,实现服务端软件与客户端软件基于网络通信. 计算机基础知识 作为应用 ...
- 小程序wxRequest封装
//const host = 'http://114.215.00.00:8005';// 测试地址 const host = 'https://xx.xxxxxxxx.net'; // 正式地址 c ...
- [2017BUAA软工助教]第0次作业小结
BUAA软工第0次作业小结 零.题目 作业链接: This is a hyperlink 一.评分规则 本次作业满分10分: 按时提交有分 一周内补交得0分 超过一周不交或抄袭倒扣全部分数 评分规则如 ...