首页 > 其他分享 >扫描线补充

扫描线补充

时间:2023-09-04 22:01:30浏览次数:47  
标签:补充 sum len int rch 扫描线 lch

1.两条扫描线之间,不一定是一个矩形,可能是多个不相交的,高相同的矩形

2.扫描线的板子没有pushdown

void upd(int u,int l,int r){
	if(cnt[u]){
		len[u]=b[r+1]-b[l];
		sum[u]=2;
		lh[u]=rh[u]=1;
	}else{
		len[u]=len[lch]+len[rch];
		sum[u]=sum[lch]+sum[rch];
		lh[u]=lh[lch],rh[u]=rh[rch];
		if(rh[lch]&&lh[rch])	sum[u]-=2;
	}
}
void add(int u,int l,int r,int L,int R,int typ){
	if(l>R||r<L)	return;
	if(l>=L&&r<=R){
        if(typ) cnt[u]++;//在这里能够停止了,u的儿子不会被改变,会感觉有问题
        else    cnt[u]--;
		upd(u,l,r);
		return;
	}
	int mid=l+r>>1;
	add(lch,l,mid,L,R,typ),add(rch,mid+1,r,L,R,typ);
	upd(u,l,r);
}

实际上是因为查找的只有tree[1].len。如果查询的是若干区间,就需要用懒惰标记,并且进行pushdown.

3.特别注意在计算周长时,要考虑边重合(相切)的问题。把边重合转化成相交,而不是相离。

对边排序时预处理可以避免这类问题。

bool cmp(line p,line q){
	return (p.y!=q.y)?p.y<q.y:p.op>q.op;
}

标签:补充,sum,len,int,rch,扫描线,lch
From: https://www.cnblogs.com/bwartist/p/17678205.html

相关文章

  • 并发编程补充
    目录并发编程补充一、asyncio模块1.asyncio中的几个重要概念2.asyncio模块的常用方法(1)run_until_complete()(2)asyncio.run()(3)asyncio.sleep()(4)async和await(5)asyncio.create_task()(6)asyncio.wait()和asyncio.gather()i.asyncio.wait实例ii.asyncio.gather实例(7)add_done_ca......
  • 22. 补充阅读-会计分类账户借贷标记的本质原理和规律
    作者:王会计王贻岩链接:https://www.zhihu.com/question/28385432/answer/281130552来源:知乎著作权归作者所有。  借贷记账法比其他复式记账法(增减记账法)简便、合理的原因就是因为其巧妙的账户结构设置规定:同类账户结构相同,异类账户结构相反。  什么意思,通过会计等式”资产......
  • 对动态 DP 和全局平衡二叉树的一点补充解释
    说明:最近在帮高中竞赛教练写讲义,这是本人对讲义中动态DP内容的补充解释(因为主要是对知识点的理解,不太容易用通用的语言表述,也不适合作为讲义内容供读者阅读,所以用的是补充注释的形式)。写的比较抽象也比较初等,仅供意会。1.为什么用矩阵表示转移我们先从一般的角度,用映射的语言......
  • 21. 补充阅读资料--会计基本概念与会计要素(转载)
    会计基本概念与会计要素(转载自https://zhuanlan.zhihu.com/p/39861991点击查看原文)会计是现代企业的一项重要基础性工作,它是通过完整记录企业经营过程中的各种事项,编制企业财务报表,反映企业的财务状况、经营成果及现金流量。财务报表是企业与投资者进行信息沟通的一种特殊语......
  • 【补充】Django中的信号
    【一】Django中的信号Django中的信号是一种机制,用于在特定事件发生时自动触发相关的操作或函数。通过使用信号,可以实现模块间的解耦和事件驱动的编程。在Django中,有两种类型的信号:内置信号和自定义信号。【二】内置信号Django提供了许多内置信号,以便我们在与数据库交互......
  • 【补充】装饰类的装饰器类作为装饰器
    【一】装饰类的装饰器:装饰类的装饰器是指一个类,它接收一个类作为参数,并返回一个新的类。这个新的类通常会继承自被装饰的类,并对其进行一些拓展或修改。示例代码如下:defdecorator(cls):classNewClass(cls):def__init__(self,*args,**kwargs):......
  • P5490 【模板】扫描线
    \(P5490\)【模板】扫描线一、题目描述求\(n\)个四边平行于坐标轴的矩形的面积并。输入格式第一行一个正整数\(n\)。接下来\(n\)行每行四个非负整数\(x_1,y_1,x_2,y_2\),表示一个矩形的四个端点坐标为\((x_1,y_1),(x_1,y_2),(x_2,y_2),(x_2,y_1)\)。输出格式......
  • 哈哈哈哈补充快捷键截图
        ......
  • SQLalchemy补充
    目录七更多查询方式八连表查询九原生sql(django-orm如何执行原生sql)9.1sqlalchemy执行原生sql9.2django执行原生sql十flask-sqlalchemy使用10.1sqlalchemy自己操作src/init.pysrc/models.pysrc/session_sql.pysrc/settings.pysrc/views.pymanage.py10.2使用flask-sqlalch......
  • 【补充】反爬措施
    【一】后端防爬虫后端防爬虫是指通过一系列措施和技术手段来保护网站或应用程序不受到未经授权的自动化访问(爬取)的影响。【二】频率限制(IP、用户)使用限流算法,例如令牌桶算法或漏桶算法,在单位时间内限制同一IP地址或用户的请求次数。为每个请求标识唯一的身份信息,如IP地址或用......