首页 > 其他分享 >模板

模板

时间:2023-09-24 14:22:26浏览次数:31  
标签:return int rson mid ls query 模板

#include<bits/stdc++.h>
using namespace std;
#define ls p<<1
#define rs p<<1|1
#define lson ls,l,mid
#define rson rs,mid+1,r
#define root 1,1,n
const int N = 1e6+9,mod = 1e9+7;
typedef long long ll;
int n,m,a[N];

struct tree
{
	int l,r,add,sum;

	tree()//需要写 不写不对 不知道为什么
	{
		l = r = sum = add = 0;
	}

	void col(int v)//打标记
	{

	}

}t[N<<2];

tree operator +(const tree &l,const tree &r)
{
	tree p;
	p.l = l.l;
	p.r = r.r;
	p.add = 0;//需要写 不写会乱标记 
	p.sum = l.sum + r.sum;

	return p;
}

void pushup(int p)
{
	t[p] = t[ls] + t[rs];
}

void pushdown(int p)
{
	int v = t[p].add;
	if(v)
	{
		t[ls].col(v);
		t[rs].col(v);
		t[p].add = 0;
	}
}

void build(int p,int l,int r)
{
	if(l == r)
	{
		t[p].l = t[p].r = l;
		t[p].col(a[l]);
		return;
	}
	int mid = (l+r)>>1;
	build(ls,l,mid);
	build(rs,mid+1,r);
	pushup(p);
}

void modify(int p,int l,int r,int L,int R,int v)
{
	if(L <= l && R >= r)
	{
		t[p].col(v);
		return;
	}
	pushdown(p);

	int mid = l+r>>1;
	if(l <= mid)modify(lson,L,R,v);
	if(r > mid)modify(rson,L,R,v);

	pushup(p);
}

tree query(int p,int l,int r,int L,int R)
{
	if(L <= l && R >= r)return t[p];
	pushdown(p);
	int mid = l+r>>1;
	if(r <= mid)return query(lson,L,R);
	else if(l > mid)return query(rson,L,R);
	else return query(lson,L,R) + query(rson,L,R);
}

int main()
{
	scanf("%d%d",&n,&m);

	for(int i = 1;i <= n;i++)scanf("%d",a+i);

	build(root);
	while(m--)
	{
		int op,l,r,v;
		scanf("%d%d%d",&op,&l,&r);
		if(op == 1)
		{
			scanf("%d",&v);
			modify(root,l,r,v);
		}
		else if(op == 2)
		{
			printf("%d",query(root,l,r).sum);
		}

	}

	return 0;
}

标签:return,int,rson,mid,ls,query,模板
From: https://www.cnblogs.com/AC7-/p/17725938.html

相关文章

  • portswigger——服务器端模板注入(SSTI)
    什么是服务器端模板注入?服务器端模板注入是指攻击者能够使用本机模板语法将恶意负载注入模板,然后在服务器端执行。模板引擎旨在通过将固定模板与易失性数据相结合来生成网页。当用户输入直接连接到模板中,而不是作为数据传入时,可能会发生服务器端模板注入攻击。这允许攻击者注入......
  • opencv 基于形状的模板匹配
    1.问题或需求描述opencv基于形状的模板匹配测试2.解决方法或原理:主要步骤:使用opencv查找轮廓(findContours)匹配轮廓(形状)(matchShapes)的相似度python代码:importcv2#读取目标图像target_image=cv2.imread('target.png',cv2.IMREAD_COLOR)#读取模板图像template_image......
  • pytest + yaml 框架 -55. raw 不转义模板语法
    前言在yaml文件中,设置的引用变量语法是${var},最近有小伙伴提到一个需求:请求参数的内容需要有特殊符号${var},希望不被转义,不要引用变量,直接用原始数据即可。raw忽略模板语法Jinja2提供了"raw"语句来忽略所有模板语法。语法示例{%raw%}hello${var}world!{%end......
  • 9.22模板
    最长公共前缀编写一个函数来查找字符串数组中的最长公共前缀。如果不存在公共前缀,返回空字符串 ""。 示例1:输入:strs=["flower","flow","flight"]输出:"fl"示例2:输入:strs=["dog","racecar","car"]输出:""解释:输入不存在公共前缀。#inc......
  • docker-dockerfile-docker镜像制作-基于本地模板创建镜像
    1.基于本地模板创建基于本地模板创建Docker镜像的步骤可以归纳如下:下载所需模板:首先,你需要在网络上找到你需要的Docker模板,并下载到本地。你可以从DockerHub或者其他的镜像仓库中获取到所需的模板。解压下载的模板:可以使用类似于7-Zip这样的工具来解压下载的模板文件。导入......
  • 模板特化的多维度挖掘
      假如我有一个需求,就是如果传入的参数是int类型,我就输出int类型,否则就输出T。很显然,根据模板的基础知识,我们可以这么写template<classT>voidf(T){std::cout<<"T\n";}template<>voidf(int){std::cout<<"int\n";}  除了这样写,还有别的写法吗。我......
  • 最短路基础实现方法模板合集
    $\color{#39c588}{关于最短路}$$\color{purple}{首先是最短路的算法选择思路捏,直接来个Y总的图}$++$\color{purple}{单源汇问题}$++$\color{orange}{朴素版Dijkstra}$实现思路//朴素版Dijkstrao(n^2)--处理稠密图--稠密图用邻接矩阵存储//1.初始化邻接......
  • jwt配置及代码模板
    jwt配置及代码模板jwt工具类的使用依赖<dependency><groupId>io.jsonwebtoken</groupId><artifactId>jjwt</artifactId><version>0.6.0</version></dependency>application.properties配置jwt.config.key=userlogin......
  • 小旋风万能蜘蛛池站群pro模板
    新版本小旋风蜘蛛池pro修改增加了一些模板标签,和原来的调用有些区别。如果没有旧版本的小旋风万能蜘蛛模板,那直接用pro的标签文档写模板,或者买现成的!现成的小旋风蜘蛛池pro模板,可以看:x1.testhot.top 到  x17      小说模板q1.testhot.top 到 q19  下载站模板ying1......
  • 【模板】模意义下的乘法逆元
    由于老是搞混,故开此文。exgcd快速幂线性递推参考资料:当然是洛谷的题解啦!!!link.......