当前位置: 首页 > article >正文

线段树讲解

线段树讲解

背景

为了解决动态区间 R M Q RMQ RMQ(最值问题)发明的一种能够快速修改和查询的数据结构。

基本思路

线段树是一个二叉搜索树,每一个节点表示一个区间。

每个叶子节点表示一个位置上的数,一个非叶子节点的值为他的儿子的和(或最大值)。

建树代码

inline void Build_Tree (register const int p, register const int l, register const int r)
{
   
	
	f[p].l = l;
	f[p].r = r;
	
	if (l == r)
	{
   
		
		f[p].sum = a[l];
	}
	
	register const int mid (l + r >> 1);
	
	Build_Tree (p << 1, l, mid);
	Build_Tree (p << 1 | 1, mid + 1, r);
	
	f[p].sum = f[p << 1].sum + f[p << 1 | 1].sum;
	
	return;
}

单点修改


http://www.kler.cn/a/415394.html

相关文章:

  • PostgreSQL在Linux环境下的常用命令总结
  • C++优选算法十六 BFS解决最短路问题
  • TDengine在debian安装
  • OGRE 3D----3. OGRE绘制自定义模型
  • ELK(Elasticsearch + logstash + kibana + Filebeat + Kafka + Zookeeper)日志分析系统
  • 如何正确使用 GitHub API 获取特定版本信息:详解错误排查与解决方案
  • 宠物领养技术:SpringBoot框架应用
  • 一个简洁的ajax注册登录找回密码切换的前端页面
  • 原生js上传图片
  • Spring 返回JSON
  • Rust个人认为将抢占C和C++市场,逐渐成为主流的开发语言
  • Hackathon靶机系列Hackathon2
  • 求助:selenium.common.exceptions.SessionNotCreatedException: x x x
  • 【小白学机器学习41】如何从正态分布的总体中去抽样? 获得指定正态分布的样本的2种方法
  • 存储结构及关系(一)
  • 计算机的错误计算(一百六十九)
  • 力扣700:二叉搜索树中的搜索
  • UICollectionView在xcode16编译闪退问题
  • 如何查看ubuntu服务器的ssh服务是否可用
  • 【浏览器】缓存与存储
  • Java WEB:从起源到现代的传奇之旅
  • Java项目中加缓存
  • 新合作!Babylon Labs、Lombard 和 Cubist 将可编程 BTC 引入Sui
  • Jenkins-基于 JNLP协议的 Java Web 启动代理
  • Python图像处理——Python转换h264格式视频
  • 链表?->?(以尾插法说明,附头插法)