首页 > 其他分享 >模板——数据结构

模板——数据结构

时间:2022-08-28 18:56:28浏览次数:64  
标签:struct int mid 模板 数据结构 最值

线段树

维护区间最值以及满足最值的个数
struct SGT{
	int mx[N<<2],tg[N<<2],su[N<<2];
	#define mid ((l+r)>>1)
	#define lc (u<<1)
	#define rc ((u<<1)|1)
	void bld(int u,int l,int r){
		mx[u]=tg[u]=su[u]=0;
		if(l==r) return;
		bld(lc,l,mid); 
		bld(rc,mid+1,r);
	}
	void pst(int u,int x){
		mx[u]+=x;
		tg[u]+=x;
	}
	void psd(int u){
		if(!tg[u]) return;
		pst(lc,tg[u]);
		pst(rc,tg[u]);
		tg[u]=0;
	}
	void psu(int u){
		mx[u]=max(mx[lc],mx[rc]);
		su[u]=0;
		if(mx[lc]==mx[u]) Madd(su[u],su[lc]);
		if(mx[rc]==mx[u]) Madd(su[u],su[rc]);
		mx[u]+=tg[u];
	}
	
	void add(int u,int l,int r,int x,int y){
		if(l==r){
			Madd(su[u],y);
			return;
		}
		psd(u);
		if(x<=mid) add(lc,l,mid,x,y);
		else add(rc,mid+1,r,x,y);
		psu(u);
	}
	
	void upd(int u,int l,int r,int a,int b,int x){
		if(a<=l && r<=b){
			pst(u,x);
			return;
		}
		psd(u);
		if(a<=mid) upd(lc,l,mid,a,b,x);
		if(b>mid) upd(rc,mid+1,r,a,b,x);
		psu(u);
	}
}T[2];

标签:struct,int,mid,模板,数据结构,最值
From: https://www.cnblogs.com/szsz/p/16633370.html

相关文章

  • 21级数据结构与算法实验2——链表
    21级数据结构与算法实验2——链表28天7-1单链表的创建及遍历分数30作者陈晓梅单位广东外语外贸大学读入n值及n个整数,建立单链表并遍历输出。输入格式:读入n及......
  • 最长上升子序列【模板】
     P1439【模板】最长公共子序列-洛谷|计算机科学教育新生态(luogu.com.cn)n^2的最长上升子序列解法#include<iostream>usingnamespacestd;intdp[1001][100......
  • C++ 之函数模板
    C++之函数模板函数的参数类型不确定,这样就可以使用泛型。//类型参数化C++中称之为泛型编程--模板技术template<classT>//告诉编译器,下面如果出现T不要报错,T是......
  • 简单动态变量文本模板
    TemplateUtils工具类importlombok.experimental.UtilityClass;importorg.springframework.cglib.beans.BeanMap;importjava.util.*;importjava.util.regex.Matche......
  • Django入门到放弃之模板及标签
    1.django模板使用的两种方式#方式一 returnrender(request,'time.html',context={'current_date':str(now),'title':'lqzNB'})#方式二(页面静态化,提高网站并发量)......
  • 数据结构
    定义:数据结构是计算机存储、组织数据的方式。 数据结构是指相互之间存在着一种或多种关系的数据元素的集合和该集合中数据元素之间的关系组成。、 数据结构......
  • 可变参数模板
    获取参数个数template<class...T>voidf(T...args){cout<<sizeof...(args)<<endl;//打印变参的个数}f();//0f(1,2);//2f(1,2.5,"......
  • smarty模板引擎中变量及变量修饰器用法实例
    smarty模板引擎中变量及变量修饰器用法实例_php实例_脚本之家 https://www.jb51.net/article/60243.htm本文实例讲述了smarty变量及变量修饰器的应用。分享给大家供大家......
  • EYOUCMS模板如何打包备份(搬家教程)
    1,本地备份数据库2,删除install_********目录下的install.lock文件3,再改名install_1540256968为install4,删除data/runtime所有文件夹5,打包根目录下所有文件,上传空间解压即......
  • IDEA的模板及配置
    什么是模板什么是模板?简单的理解就是配置一些字母缩写。使用简写的方式,就能出现预定义的固定代码。这样做可以大大提高开发效率。最常见的就是输入 sout就会出现 Syst......