摘要: 首先需要先知道一个概念: 二叉搜索树 —— 左孩子比父亲小,右孩子大于等于父亲 一、Splay的旋转 旋转是Splay的精髓也是至关重要的操作 旋转也分为左旋、右旋 这里是直接概括了所有旋转的规律: 我们定义一个结点与他父亲的关系是 x ,那么在旋转时,他的父亲成为了他的 !x 儿子,并且那个上文中 阅读全文
posted @ 2020-03-01 22:39 _Ackerman 阅读(243) 评论(0) 推荐(0) 编辑
摘要: 思路: 最坏的情况就是凑和为 x+y ,可以凑 x+y-1 对 最好的情况就是 : 1、x+y <= n 那么我们让 1 和 n,2 和 n-1 ,3 和 n-2 这样凑,这样的话排名肯定是第一名 (其他都比 x+y 大) 2、x+y > n 我们就考虑把这种情况转化为 1 情况,让 1 和 1 配 阅读全文
posted @ 2020-03-01 22:04 _Ackerman 阅读(345) 评论(0) 推荐(0) 编辑
摘要: 思路: 显然满足题意的一定是一个单峰序列,于是可以考虑第i个当最高点的时候,左边的最大总和,而这个是可以递推的,因为当m[i]>=m[i-1]的时候第i个可以直接取m[i]加上去,而当m[i] < m[i-1]的时候,要把之前所有大于m[i]的都变成m[i],而之前的部分是单增的,于是可以开个单调栈 阅读全文
posted @ 2020-03-01 21:50 _Ackerman 阅读(350) 评论(0) 推荐(0) 编辑
摘要: 思路: 初中的“追及问题” 假设 Xi 在 Xj 的左侧,并且速度 Vi 大于 Vj,那么 Xi 肯定可以追上 Xj 即 d(i,j) = 0 如果速度 Vi <= Vj ,那么 d(i,j) = abs(Xi - Xj) 所以答案就是: ans+=(数组中位于当前点前面的点的数量(速度小于当前点速 阅读全文
posted @ 2020-03-01 21:41 _Ackerman 阅读(277) 评论(0) 推荐(0) 编辑
摘要: 题目大意: 要求构造一个n个节点的二叉树(每个节点拥有不超过2个孩子),节点1为根,要使所有节点到根的距离之和为d。要求先判断可不可以构造,如果可以输出“YES”,下一行输出2到n号节点的父亲节点,否则输出“NO”。有多组询问。 思路: 首先不难想到深度和最小的那种就是满二叉树的形式。然后我们再考虑 阅读全文
posted @ 2020-03-01 21:33 _Ackerman 阅读(354) 评论(0) 推荐(0) 编辑