题目背景
ZBY 是一只青蛙!
题目描述
如果一只青蛙在 u (u>1) 号荷叶,他会进行一步等概率的跳跃,从 u 号荷叶跳到 1…u 号荷叶。
现在青蛙在 N 号荷叶,求出他跳到 1 号荷叶的期望步数。
感觉是个好大的坑wa…我就简略地写写好了…其实树状数组在大部分时候仅作为线段树的替代品(执行的基本操作相似,且代码简单易懂,时空复杂度均低于线段树),那那那为什么需要线段树呢?树状数组的适用范围小啊(很小很小啊)执行基本修改查询操作已经很不错了还苛求什么呢…
树状数组(Binary Indexed Tree(B.I.T), Fenwick Tree)是一个查询和修改复杂度都为log(n)的数据结构。主要用于查询任意两位之间的所有元素之和,但是每次只能修改一个元素的值;经过简单修改可以在log(n)的复杂度下进行范围修改,但是这时只能查询其中一个元素的值(如果加入多个辅助数组则可以实现区间修改与区间查询)。
左偏树(Leftist Tree)是一种可并堆的实现,是具有左偏性质的堆有序二叉树
可并堆(Mergeable Heap)是一种抽象数据类型,它除了支持优先队列的三个基本操作(Insert, Minimum,Delete-Min),还支持一个额外的操作——合并操作。
左偏性质是为了使我们可以以更小的代价在优先队列的其它两个基本操作(插入节点、删除最小节点)进行后维持堆性质。
左偏树是一棵二叉树,它的节点除了和二叉树的节点一样具有左右子树指针(left, right)外,还有两个属性,键值(key)和距离(dist)
节点的键值小于或等于它的左右子节点的键值(小根)
节点的左子节点的距离不小于右子节点的距离(左偏性质)
节点的距离等于它的右子节点的距离加1