树状数组解决什么问题
树状数组(Fenwick)擅长的是【0】。
阅读更多 →
改一个值,再查一次
把下标 2 上的 15 改成 30,然后重新查下标 1 到 3 的和。 (这里偷个懒:改完之后整棵树重建一次。真正的线段树只需要沿着一条路往上更新,代价是 O(log n)。)
阅读更多 →
把"求和"换成"求最大"
线段树不止能求和。补全 max_build:把合并那一步从相加换成取较大的。 建好之后输出根节点存的值。
阅读更多 →
查一段区间的和
补全 seg_sum:查下标 ql 到 qr 这一段的和。 查下标 1 到 3,输出结果。
阅读更多 →
把线段树建起来
补全 seg_build:叶子存单个元素,非叶子存左右两个孩子之和。 建好之后输出根节点存的值(也就是整段的和)。
阅读更多 →
整段里最大的是几
同一个数组。运行下面这段程序: A = [17, 24, 15, 13, 23] print(max(A))
阅读更多 →
中间那三个数的和
数组是 17、24、15、13、23。运行下面这段程序(查下标 1 到 3): def seg_build(a, node, l, r, tree): if l == r: t
阅读更多 →
查一段区间和要多久
用线段树查任意一段区间的和,代价是【0】。
阅读更多 →
线段树的每个节点存什么
线段树的每个节点存的是【0】。
阅读更多 →
两种树的高度差多少
同一个 levels。一百万条数据,把 B+树(每节点 100 键)和二叉树(每节点 2 键)的层数拼起来输出(用 / 隔开)。 这个差距就是数据库索引选 B+树的全部理由。
阅读更多 →