数组越界写会怎样
C++ 里往数组越界的位置写数据,通常会【0】。
五个数用到的最大下标
对 5 个数建线段树(根是 1 号),看看用到的最大下标是多少。 运行下面这段程序: #include <algorithm> #include <iostream> #include <map> #in
十万个数的全局数组多大
开一个能装 10 万个数的线段树全局数组,看看它占多少 MB(整除取整)。 运行下面这段程序: #include <algorithm> #include <iostream> #include <map>
六个数要用到几号格
补全 max_index:返回对区间 [l, r] 建线段树时用到的最大编号。输出 6 个数的线段树用到的最大编号。 (本题用 g++ -std=c++17 -O0 编译。)
数一数 2n 不够的有几个
补全:统计 n = 1 到 1000 里,线段树用到的最大编号超过 2n 的 n 一共有多少个。 (本题用 g++ -std=c++17 -O0 编译。)
在全局数组上建树
线段树数组 tr 已经开成全局的 4n。补全 gbuild,建好后查下标 1 到 3 的和。 (本题用 g++ -std=c++17 -O0 编译。)
单点修改只走一条路
补全 gupdate:把下标 pos 的值改成 val,只沿着一条从叶子到根的路更新。把下标 2 改成 30 后查下标 1 到 3 的和。 (本题用 g++ -std=c++17 -O0 编译。)
区间最大值查询
这次 tr 存的是区间最大值(已建好)。补全 gmax:查下标 1 到 3 的最大值(数都是正的,不搭边返回 -1)。 (本题用 g++ -std=c++17 -O0 编译。)
树状数组解决什么问题
第 1 步:t[1..5]:每格管一小段 第 2 步:查前 3 个:从 i=3 出发 第 3 步:加上 t[3],i 减去 1 变成 2 第 4 步:加上 t[2],i 减去 2 变成 0 第 5 步:两格就凑齐了前 3 个 17 41 1
lowbit 取的是什么(C++)
lowbit(x) 取的是【0】。