首页 > 其他分享 >线段树模板复习

线段树模板复习

时间:2023-03-31 21:12:37浏览次数:42  
标签:rt lazy 复习 int 线段 mid build void 模板

建树

void build(int l,int r,int rt)
{
	if(l==r)
	{
		t[rt]=a[l];
		return;
	}
	int mid=(l+r)>>1;
	build(l,mid,rt<<1);
	build(mid+1,r,(rt<<1)|1);
	t[rt]=t[rt<<1]+t[(rt<<1)|1];
}

标记下传

void pushdown(int l,int r,int rt)
{
	if(lazy[rt])
	{
		int mid=(l+r)>>1;
		lazy[rt<<1]+=lazy[rt];
		lazy[(rt<<1)|1]+=lazy[rt];
		t[rt<<1]+=lazy[rt]*(mid-l+1);
		t[(rt<<1)|1]+=lazy[rt]*(r-mid);
		lazy[rt]=0;
	}
}

区间增加

void add(int l,int r,int L,int R,int rt,int x)
{
	if(L<=l&&r<=R)
	{
		lazy[rt]+=x;
		t[rt]+=(r-l+1)*x;
		return;
	}
	pushdown(l,r,rt);
	int mid=(l+r)>>1;
	if(L<=mid)add(l,mid,L,R,rt<<1,x);
	if(mid+1<=R)add(mid+1,r,L,R,(rt<<1)|1,x);
	t[rt]=t[rt<<1]+t[(rt<<1)|1];
}

区间查询

int query(int l,int r,int L,int R,int rt)
{
	if(L<=l&&r<=R)return t[rt];
	int res=0;
	pushdown(l,r,rt);
	int mid=(l+r)>>1;
	if(L<=mid)res+=query(l,mid,L,R,rt<<1);
	if(mid+1<=R)res+=query(mid+1,r,L,R,(rt<<1)|1);
	return res;
}

标签:rt,lazy,复习,int,线段,mid,build,void,模板
From: https://www.cnblogs.com/HikariFears/p/17277466.html

相关文章

  • Codeforces Gym 103931F - Forest of Magic(时间轴分块+线段树合并)
    一个巨烦的时间轴分块做法,有点类似于P2137Gty的妹子树先考虑静态的情况。看上去就一脸线段树合并对吧?一次修改的操作对一个点\(x\)贡献可以写成\(k·dep_x+b\)的形式,开两棵线段树合并维护一次项和零次项系数即可。由于静态问题可做,因此考虑时间轴分块。设阈值\(B\),每\(B......
  • 洛谷P3374 【模板】树状数组 1-(单点修改,区间查询)
    题目描述如题,已知一个数列,你需要进行下面两种操作:将某一个数加上 x求出某区间每一个数的和输入格式第一行包含两个正整数 n,m,分别表示该数列数字的个数和操作的总个数。第二行包含 n 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。接下来 ......
  • 洛谷P3368 【模板】树状数组 2-(区间修改,单点查询)
    题目描述如题,已知一个数列,你需要进行下面两种操作:将某区间每一个数加上 x;求出某一个数的值。输入格式第一行包含两个整数 N、M,分别表示该数列数字的个数和操作的总个数。第二行包含 N 个用空格分隔的整数,其中第 i 个数字表示数列第 i 项的初始值。接下来......
  • CAD如何测量连续线段长度?CAD测量连续线段长度步骤
    在CAD绘图过程中,经常会绘制一些连续的线段,如果想要知道这些连续线段长度的话,该怎么操作吗?CAD如何测量连续线段长度?下面小编就以浩辰CAD软件为例来给大家分享一下CAD测量连续线段长度的具体操作步骤吧!CAD测量连续线段长度步骤:浩辰CAD软件中已经考虑到了这种需求,在CAD测量命令(DIST......
  • django自定义模板显示不同状态的颜色
    一般这个颜色列表是放在models.py里charge_type_class_mapping={1:"success",2:"danger",3:"default",4:"info",5:"primary",} color.pyfromdjango.templateimportLib......
  • 烟雨黑帽技术程序演示:AI智能模板在线制作制作神器-单域名版+多域名版-一键批量制作黑
    烟雨黑帽程序演示:AI智能模板制作神器,用于一键制作黑帽程序模板、零基础小白神器,可直接对接到你程序下使用,支持批量或单个模板的制作。适用于寄生虫、泛目录、站群、蜘蛛池等黑帽程序模板的制作。程序使用极其简单,只需要准备好你想要的模板链接,支持首页或内页,放程序里一键制作即......
  • 触发器模板
    --删除ifexists(select*fromdbo.sysobjectswhereid=OBJECT_ID(N'[dbo].[trig_delete_Ap_CloseBill_extradefine]')andOBJECTPROPERTY(id,N'IsTrigger')=1)dropTRIGGERtrig_delete_Ap_CloseBill_extradefinegoCREATETRIGGERtrig_dele......
  • CSS总复习(二)一些属性介绍
    CSS字体、文本样式指定字体不能指望用户的机器上一定安装了你想使用的字体。解决这个问题的方法是使用Web字体,我们可以直接下载Web字体并使用在自己的页面上,而不需要用户做什么。使用@font-face指定Web字体,如:@font-face{font-family:'MyFont';font-style:normal;......
  • CSS总复习(一)基础
    CSS是什么CSS(层叠样式表)用来规定HTML文档的呈现形式(外观和格式编排)。CSS样式由一条或多条以分号隔开的样式声明组成。每条声明包含着一个CSS属性和该属性的值,二者以冒号分隔。PS:书中有句话很nice:“笨蛋才会为完美的CSS方案纠缠不休”。因为一种效果的实现方式可能有很多种,你只要......
  • 微信小程序使用 wxs 对模板数据格式化展示
    在小程序页面展示时,对时间、金额进行格式化处理。但是每次在js文件中处理,并setData感觉无比麻烦。是否可以直接在wxml模板文件中进行处理。正好发现了微信小程序wxs,完全满足需求。微信小程序wxs使用场景WXS(WeiXinScript)是微信创造的一套脚本语言,虽然看起来很JS异常......