题目链接:https://codeforces.com/gym/101982/attachments

要你求覆盖奇数次的矩形面积并,每次更新时减去原先的值即可实现奇数次有效,下推时为保证线段长度不变左儿子的值为x[mid]-x[l]再减原来的值,右儿子的值为x[r]-x[mid]再减原来的值

#include<iostream>
#include<algorithm>
using namespace std;
#define ll long long
#define maxn 200005
struct seg{
ll l,r,h,s;
seg(){}
seg(ll l,ll r,ll h,ll s):l(l),r(r),h(h),s(s){};
bool operator <(const seg &a)const{
return h<a.h;
}
}se[maxn];
ll sum[maxn<<],lazy[maxn<<],x[maxn];
void pushup(ll rt)
{
sum[rt]=sum[rt<<]+sum[rt<<|];
}
void pushdown(ll rt,ll l,ll r)
{
if(lazy[rt])
{
lazy[rt<<]^=;
lazy[rt<<|]^=;
ll mid=l+r>>;
sum[rt<<]=x[mid]-x[l]-sum[rt<<];
sum[rt<<|]=x[r]-x[mid]-sum[rt<<|];
lazy[rt]=;
}
}
void update(ll L,ll R,ll l,ll r,ll rt)
{
if(L<=l&&R>=r)
{
lazy[rt]^=;
sum[rt]=x[r]-x[l]-sum[rt];
return ;
}
ll mid=l+r>>;
pushdown(rt,l,r);
if(L<mid)update(L,R,l,mid,rt<<);
//因为往右更新时是mid到r 不是mid+1到r 所以L<=mid 会造成死循环 如l=l r=2 L=2 R=3 mid=1
if(R>mid)update(L,R,mid,r,rt<<|);
pushup(rt);
}
int main()
{
int n,x1,x2,y1,y2,tot=;
cin>>n;
for(int i=;i<=n;i++)
{
cin>>x1>>y1>>x2>>y2;
x[tot]=x1;
se[tot++]=seg(x1,x2,y1,);
x[tot]=x2;
se[tot++]=seg(x1,x2,y2,-);
}
x[]=-;
sort(x+,x+tot);
sort(se+,se+tot);
int nx=unique(x,x+tot)-x;
ll ans=;
for(int i=;i<tot-;i++)
{
ll l=lower_bound(x,x+nx,se[i].l)-x;
ll r=lower_bound(x,x+nx,se[i].r)-x;
update(l,r,,nx,);
ans+=sum[]*(se[i+].h-se[i].h);
}
cout<<ans<<endl;
return ;
}

Gym - 101982F 扫描线+线段树的更多相关文章

  1. HDU 3642 - Get The Treasury - [加强版扫描线+线段树]

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3642 Time Limit: 10000/5000 MS (Java/Others) Memory L ...

  2. 【BZOJ3958】[WF2011]Mummy Madness 二分+扫描线+线段树

    [BZOJ3958][WF2011]Mummy Madness Description 在2011年ACM-ICPC World Finals上的一次游览中,你碰到了一个埃及古墓. 不幸的是,你打开了 ...

  3. HDU 3265/POJ 3832 Posters(扫描线+线段树)(2009 Asia Ningbo Regional)

    Description Ted has a new house with a huge window. In this big summer, Ted decides to decorate the ...

  4. 【bzoj4491】我也不知道题目名字是什么 离线扫描线+线段树

    题目描述 给定一个序列A[i],每次询问l,r,求[l,r]内最长子串,使得该子串为不上升子串或不下降子串 输入 第一行n,表示A数组有多少元素接下来一行为n个整数A[i]接下来一个整数Q,表示询问数 ...

  5. hdu1542 Atlantis(扫描线+线段树+离散)矩形相交面积

    题目链接:点击打开链接 题目描写叙述:给定一些矩形,求这些矩形的总面积.假设有重叠.仅仅算一次 解题思路:扫描线+线段树+离散(代码从上往下扫描) 代码: #include<cstdio> ...

  6. P3722 [AH2017/HNOI2017]影魔(单调栈+扫描线+线段树)

    题面传送门 首先我们把这两个贡献翻译成人话: 区间 \([l,r]\) 产生 \(p_1\) 的贡献当且仅当 \(a_l,a_r\) 分别为区间 \([l,r]\) 的最大值和次大值. 区间 \([l ...

  7. Codeforces Gym 101480C - Cow Confinement(扫描线+线段树)

    题面传送门 题意: 有一个 \(10^6\times 10^6\) 的地图.其中 \(m\) 个位置上有花,\(f\) 个矩形外围用栅栏围了起来.保证 \(f\) 个矩形两两之间没有公共点. \(q\ ...

  8. BZOJ 2584: [Wc2012]memory(扫描线+线段树)

    题目链接:http://www.lydsy.com:808/JudgeOnline/problem.php?id=2584 题意:给出平面n个线段,任意两个线段严格不相交,且每个线段不平行于坐标轴.移 ...

  9. Codeforces Gym 100231B Intervals 线段树+二分+贪心

    Intervals 题目连接: http://codeforces.com/gym/100231/attachments Description 给你n个区间,告诉你每个区间内都有ci个数 然后你需要 ...

随机推荐

  1. laravel5数据库配置及其注意事项

    今天分享一个Laravel5数据库配置上的坑. Laravel5作为一套简洁.优雅的PHP Web开发框架(笑),唯一不足的一点就是中文手册或者说是资料比较少,虽然现在很多大神也开始普及这些东西,但是 ...

  2. 原生js添加鼠标事件的兼容性写法

    兼容pc和移动端,还兼容了surface平板. surface平板特别坑,既可以用鼠标也能用触摸屏,也就是说同时有touch事件和mouse事件. function addEvent(_target, ...

  3. 备战省赛组队训练赛第六场(UPC)

    传送门 外来博客题解1:戳这里 外来博客题解2:戳这里 CRWG全方位题解:戳这里

  4. GetDc函数与GetWindowDC函数的区别

    GetDc函数:用于获得hWnd参数所指定窗口的客户区域的一个设备环境 GetWindowDC函数:返回hWnd参数所指定的窗口的设备环境. 获得的设备环境覆盖了整个窗口(包括非客户区),例如标题栏. ...

  5. CodeForces 906D (欧拉降幂)

    Power Tower •题意 求$w_{l}^{w_{l+1}^{w_{l+2}^{w_{l+3}^{w_{l+4}^{w_{l+5}^{...^{w_{r}}}}}}}}$ 对m取模的值 •思路 ...

  6. 【2016常州一中夏令营Day4】

    小 W 走迷宫[问题描述]小 W 被小 M 困在了一个方格矩阵迷宫里,矩阵边界在无穷远处,我们做出如下的假设:a. 每走一步时,只能从当前方格移动一格,走到某个相邻的方格上:b. 走过的格子立即塌陷无 ...

  7. PDF.JS 读取文件流前端展示 C#

    最近再搞PDF得展示问题,因为aspose.pdf成本太高,只能使用pdf.js这个开源强大的前端东东了. 在百度了很久后 网上大都是node,java,php的事例,有位大哥的是C#的后台代码按他写 ...

  8. JNDI数据源的使用

    有时候我们数据库的连接会使用jndi的方式 try { InitialContext ic = new InitialContext(); dataSource = (DataSource) ic.l ...

  9. 用WPF实现大数据展示,超炫的效果

    开头语 经过一段时间研究,终于实现CS和BS相同效果的大数据展示平台了.首先来看看实现的效果,超炫的效果,客户特别喜欢,个人也非常满意,分享给各位,同大家一起交流学习. 从上图可以看出,分为左中右三栏 ...

  10. TCP/IP||UDP广播和多播

    1.概述 广播和多播应用于UDP,TCP是一个面向连接协议,意味着分别运行与两个主机内的两进程间存在一个连接,在考虑多个主机内的共享通信网络,每个以太网帧包含源主机和目的主机以太网地址(48bit), ...