bzoj1382: [Baltic2001]Mars Maps
Description
Input
Output
#include<cstdio>
#include<algorithm>
typedef long long i64;
char buf[],*ptr=buf-;
int _(){
int x=,f=,c=*++ptr;
while(c<)c=='-'&&(f=-),c=*++ptr;
while(c>)x=x*+c-,c=*++ptr;
return x*f;
}
int n,_L,_R,A;
int rs[][];
struct node{
node*l,*r;
int mn,mc,av;
void dn(){
if(!av)return;
l->mn+=av;
l->av+=av;
r->mn+=av;
r->av+=av;
av=;
}
void up(){
mn=l->mn;
mc=l->mc;
if(mn>r->mn)mn=r->mn,mc=r->mc;
else if(mn==r->mn)mc+=r->mc;
}
void inc(int L,int R){
if(_L<=L&&R<=_R){
mn+=A;
av+=A;
return;
}
dn();
int M=L+R>>;
if(_L<=M)l->inc(L,M);
if(_R>M)r->inc(M+,R);
up();
}
}ns[],*np=ns,*rt;
int ys[],yp=;
node*build(int L,int R){
node*w=np++;
w->mc=ys[R+]-ys[L];
if(L!=R){
int M=L+R>>;
w->l=build(L,M);
w->r=build(M+,R);
}
return w;
}
struct event{
int x,y1,y2,t;
}e[],*ep=e;
bool operator<(const event&a,const event&b){
return a.x<b.x;
}
int main(){
fread(buf,,,stdin);
n=_();
for(int i=;i<n;++i){
for(int j=;j<;++j)rs[i][j]=_();
ys[yp++]=rs[i][];
ys[yp++]=rs[i][];
}
std::sort(ys,ys+yp);
yp=std::unique(ys,ys+yp)-ys;
for(int i=;i<n;++i){
rs[i][]=std::lower_bound(ys,ys+yp,rs[i][])-ys;
rs[i][]=std::lower_bound(ys,ys+yp,rs[i][])-ys-;
*(ep++)=(event){rs[i][],rs[i][],rs[i][],};
*(ep++)=(event){rs[i][],rs[i][],rs[i][],-};
}
rt=build(,yp-);
std::sort(e,ep);
ep->x=0x7fffffff;
int px=e->x,h=ys[yp-]-ys[];
i64 ans=;
for(event*p1=e,*p2=e;p1!=ep;p1=p2){
ans+=i64(p1->x-px)*(h-(rt->mn?:rt->mc));
px=p1->x;
while(p1->x==p2->x)++p2;
while(p1!=p2){
_L=p1->y1,_R=p1->y2,A=p1->t;
if(_L<=_R)rt->inc(,yp-);
++p1;
}
}
printf("%lld",ans);
return ;
}
bzoj1382: [Baltic2001]Mars Maps的更多相关文章
- BZOJ1382:[Baltic2001]Mars Maps
浅谈树状数组与线段树:https://www.cnblogs.com/AKMer/p/9946944.html 题目传送门:https://www.lydsy.com/JudgeOnline/prob ...
- [BZOJ1382]Mars Maps
Description In the year 2051, several Mars expeditions have explored different areas of the red plan ...
- bzoj AC倒序
Search GO 说明:输入题号直接进入相应题目,如需搜索含数字的题目,请在关键词前加单引号 Problem ID Title Source AC Submit Y 1000 A+B Problem ...
- [IOI1998]Picture
Description 在一个平面上放置一些矩形,所有的边都为垂直或水平.每个矩形可以被其它矩形部分或完全遮盖,所有矩形合并成区域的边界周长称为轮廓周长. 要求:计算轮廓周长. 数据规模: 0≤矩形数 ...
- How to Tell Science Stories with Maps
Reported Features How to Tell Science Stories with Maps August 25, 2015 Greg Miller This map, part ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 Mars 系列 - 我们如约而至
导语 昨天上午,微信在广州举办了微信公开课Pro.于是,精神哥这两天的朋友圈被小龙的"八不做"刷屏了.小伙伴们可能不知道,下午,微信公开课专门开设了技术分论坛.在分论坛中,微信开源 ...
- 【腾讯Bugly干货分享】微信终端跨平台组件 mars 系列(二) - 信令传输超时设计
本文来自于腾讯Bugly公众号(weixinBugly),未经作者同意,请勿转载,原文地址:http://mp.weixin.qq.com/s/9DJxipJaaBC8yC-buHgnTQ 作者简介: ...
- 如约而至:微信自用的移动端IM网络层跨平台组件库Mars已正式开源
1.前言 关于微信内部正在使用的网络层封装库Mars开源的消息,1个多月前就已满天飞(参见<微信Mars:微信内部正在使用的网络层封装库,即将开源>),不过微信团队没有失约,微信Mars ...
- 检索Google Maps地图位置(小训练)
名称:检索地图位置 内容:地图初期显示和检索显示 功能:根据条件检索地图的经度与纬度 1.在这之前我们需要创建一个表(Accoun__c),添加一个重要的字段地理位置情報,它会默认的给你两个字段经度和 ...
随机推荐
- iOS学习笔记---oc语言第七天
类的扩展 NSDate是Cocoa中用于处理日期和时间的基础类,封装了某一给定的时刻,具体的日期 时间和时区 使用+date方法获取当前日期和时间 NSDate *date = [NSDate dat ...
- SAP 增强说明
转自http://blog.csdn.net/lyb_yt/article/details/8177974 (一)什么是增强(Enhancement)? 简单地说,增强就是ERP系统中标准程序的出口, ...
- Welcome to MacJournal!
Welcome to MacJournal 6 To get started, create a new entry by clicking on "New Entry" in t ...
- Lock锁
Lock lock = new ReentrantLock(); lock.lock(); try { } finally { } 注意:不要将获取锁的过程写在try块中,因为如果在获取锁(自定义锁的 ...
- 在web.xml中配置error-page
在web.xml中配置error-page 在web.xml中有两种配置error-page的方法,一是通过错误码来配置,而是通过异常的类型来配置,分别举例如下: 一. 通过错误码来配置error ...
- JavaScript学习记录总结(九)——移动添加效果
<!DOCTYPE html><html><head><title>moveOption.html</title> <meta nam ...
- MongoDB副本集搭建及备份恢复
一.MongoDB副本集(repl set)介绍 早起版本使用master-slave,一主一从和MySQL类似,但slave在此架构中为只读,当主库宕机后,从库不能自动切换为主: 目前已经淘汰了ma ...
- spark与storm的对比
对比点 Storm Spark Streaming 实时计算模型 纯实时,来一条数据,处理一条数据 准实时,对一个时间段内的数据收集起来,作为一个RDD,再处理 实时计算延迟度 毫秒级 秒级 吞吐量 ...
- javascrip中的confirm小技巧
jsp页面中的一个标签: <a href="javascript:void(0)" onclick="confirmDelete('<%=request.ge ...
- Flash pixel Bender学习笔记
pixel Bender是指用来创建,编译,测试和导出pixel shader,用于各种flash产品的一个IDE. Pixel Bender是Adobe推出的一个高性能的图像视频处理技术.它能跨平台 ...