#扫描线,线段树#洛谷 3875 [TJOI2010]被污染的河流
分析
矩阵面积并不是扫描线模板题吗
然后连题目都没仔细看就交了
发现它是一个线段向外扩展一个格子qwq
代码
#include <cstdio>
#include <cctype>
#include <algorithm>
#define rr register
using namespace std;
const int N=200011; long long ans;
struct rec{int x,l,r,w;}b[N];
int n,k,w[N<<2],lazy[N<<2],a[N];
inline signed iut(){
rr int ans=0; rr char c=getchar();
while (!isdigit(c)) c=getchar();
while (isdigit(c)) ans=(ans<<3)+(ans<<1)+(c^48),c=getchar();
return ans;
}
inline void update(int k,int l,int r,int x,int y,int end){
if (l==x&&r==y){
lazy[k]+=end;
if (lazy[k]) w[k]=a[r+1]-a[l];
else if (l==r) w[k]=0;
else w[k]=w[k<<1]+w[k<<1|1];
return;
}
rr int mid=(l+r)>>1;
if (y<=mid) update(k<<1,l,mid,x,y,end);
else if (x>mid) update(k<<1|1,mid+1,r,x,y,end);
else update(k<<1,l,mid,x,mid,end),update(k<<1|1,mid+1,r,mid+1,y,end);
if (lazy[k]) w[k]=a[r+1]-a[l];
else w[k]=w[k<<1]+w[k<<1|1];
}
bool cmp(rec a,rec b){return a.x<b.x||(a.x==b.x&&a.w>b.w);}
signed main(){
for (rr int m=iut();m;--m){
rr int xa=iut(),ya=iut(),xb=iut(),yb=iut();
if (xa>xb) xa^=xb,xb^=xa,xa^=xb;
if (ya>yb) ya^=yb,yb^=ya,ya^=yb;
if (xa==xb){
b[++k]=(rec){xa-1,ya,yb,1},
b[++k]=(rec){xa+1,ya,yb,-1},
a[++n]=ya,a[++n]=yb;
}else{
b[++k]=(rec){xa,ya-1,yb+1,1},
b[++k]=(rec){xb,ya-1,yb+1,-1},
a[++n]=ya-1,a[++n]=yb+1;
}
}
sort(a+1,a+1+n),sort(b+1,b+1+k,cmp),n=unique(a+1,a+1+n)-a-1;
for (rr int i=1;i<k;++i){
rr int l=lower_bound(a+1,a+1+n,b[i].l)-a,
r=lower_bound(a+1,a+1+n,b[i].r)-a-1;
update(1,1,n,l,r,b[i].w),ans+=1ll*(b[i+1].x-b[i].x)*w[1];
}
return !printf("%lld",ans);
}
#扫描线,线段树#洛谷 3875 [TJOI2010]被污染的河流的更多相关文章
- 线段树 洛谷P3932 浮游大陆的68号岛
P3932 浮游大陆的68号岛 题目描述 妖精仓库里生活着黄金妖精们,她们过着快乐,却随时准备着迎接死亡的生活. 换用更高尚的说法,是随时准备着为这个无药可救的世界献身. 然而孩子们的生活却总是无忧无 ...
- [线段树]洛谷P5278 算术天才⑨与等差数列
题目描述 算术天才⑨非常喜欢和等差数列玩耍. 有一天,他给了你一个长度为n的序列,其中第i个数为a[i]. 他想考考你,每次他会给出询问l,r,k,问区间[l,r]内的数从小到大排序后能否形成公差为k ...
- 区间连续长度的线段树——洛谷P2894 [USACO08FEB]酒店Hotel
https://www.luogu.org/problem/P2894 #include<cstdio> #include<iostream> using namespace ...
- HDU 3642 - Get The Treasury - [加强版扫描线+线段树]
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3642 Time Limit: 10000/5000 MS (Java/Others) Memory L ...
- 【BZOJ3958】[WF2011]Mummy Madness 二分+扫描线+线段树
[BZOJ3958][WF2011]Mummy Madness Description 在2011年ACM-ICPC World Finals上的一次游览中,你碰到了一个埃及古墓. 不幸的是,你打开了 ...
- 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 ...
- 【bzoj4491】我也不知道题目名字是什么 离线扫描线+线段树
题目描述 给定一个序列A[i],每次询问l,r,求[l,r]内最长子串,使得该子串为不上升子串或不下降子串 输入 第一行n,表示A数组有多少元素接下来一行为n个整数A[i]接下来一个整数Q,表示询问数 ...
- hdu1542 Atlantis(扫描线+线段树+离散)矩形相交面积
题目链接:点击打开链接 题目描写叙述:给定一些矩形,求这些矩形的总面积.假设有重叠.仅仅算一次 解题思路:扫描线+线段树+离散(代码从上往下扫描) 代码: #include<cstdio> ...
- P3722 [AH2017/HNOI2017]影魔(单调栈+扫描线+线段树)
题面传送门 首先我们把这两个贡献翻译成人话: 区间 \([l,r]\) 产生 \(p_1\) 的贡献当且仅当 \(a_l,a_r\) 分别为区间 \([l,r]\) 的最大值和次大值. 区间 \([l ...
- Codeforces 407E - k-d-sequence(单调栈+扫描线+线段树)
Codeforces 题面传送门 & 洛谷题面传送门 深感自己线段树学得不扎实-- 首先特判掉 \(d=0\) 的情况,显然这种情况下满足条件的区间 \([l,r]\) 中的数必须相同,双针扫 ...
随机推荐
- Docker方式快速启动一个Redis实例
安装Redis有多种方式,除了可以通过各个平台的软件包工具安装外,还可以直接从源码安装. 但是,安装Redis可能会遇到一些这样的问题,比如: 1.网络环境比较差,下载耗时比较长 2.从源码编译安装时 ...
- requests请求超时尝试重连的3种方式
参考文档 https://urllib3.readthedocs.io/en/latest/reference/urllib3.util.html#module-urllib3.util.retry ...
- matplotlib画图中x轴过于密集的解决办法
import matplotlib.ticker as ticker ax.xaxis.set_major_locator(ticker.MultipleLocator(base=10)) # tic ...
- 【Azure 存储服务】使用REST API操作Azure Storage Table,删除数据(Delete Entity)
问题描述 使用Azure Storage Table的REST API,实现根据过滤条件删除满足条件的数据,调用方法为 Delete Entity (Azure Storage) 问题实现 第一步: ...
- 【Azure 媒体服务】Azure Media Service Explorer 5.4.3.0 不能连接Media Service, 错误消息提示 BadRequest 和 Forbidden
问题描述 Azure Media Service Explorer 5.4.3.0 不能连接Media Service, 错误消息提示 BadRequest 和 Forbidden. 截图如下: Ba ...
- 【Azure 应用服务】如何让App Service 支持 Delete 方法
问题描述 如何让webapp 支持 delete 方法? 在不修改设置的情况下,调用DELETE方法出现405错误 - 方法不被允许 问题解决 基于当前App Service在Windows的环境中运 ...
- NebulaGraph v3.3.0 发布:支持子图过滤、和大量性能优化
NebulaGraph 3.3.0 支持了 GET SUBGRAPH 和 GetNeighbors 的点过滤.引入了大量性能优化,同时,开始对无 tag 顶点的支持默认关闭. 优化 优化了 k-hop ...
- SpringCloud zookeeper和consul 的介绍和基本搭建
1. Spring Cloud 集成 zookeeper Spring Cloud 集成了 zookeeper ,通过一些简单的注释,就可以快速注册到zookeeper 服务中 并且支持Spring ...
- jenkins 钉钉机器人插件
官方文档: https://jenkinsci.github.io/dingtalk-plugin/guide/getting-started.html#%E6%B3%A8%E6%84%8F 注意:系 ...
- 8、zookeeper的集群搭建
完全配置--https://zookeeper.apache.org/doc/r3.4.14/zookeeperAdmin.html#sc_zkMulitServerSetup https://zoo ...