网站大量收购独家精品文档,联系QQ:2885784924

count on treap题解试题准备cot5.pdfVIP

  1. 1、本文档共3页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多

题解

年月日

题目大意

一个大根的,使得支持以下操作:

,一个新的节点,为,为

,除一个为的节点

,返回两个为和节点在树中的距离

题解

预处理

用表示为,为的点。给离散化,接着按照的从小到

大给组成一个序列。例如得到的序列为。为这

个序列中第个的值。

显然的性质

首先显然可以得到以下性质:

根节点为序列范围在中最大的点,记根节点,即满足

。然后在树中的左儿子为里最大的点,右儿

子为里最大的点,这样递归下去可以建成一棵树。

序列中左边第一个大于的结点记为,右边第一个大于结点的为。

那么如果时,的父亲为,否则为。

两个节点和在树中的应该是中最大的点。

•记结点的深度为,那么和的距离应该为−∗。

分析

对于一个询问我们可以先计算出和的,接着计算出来、、

的深度,就可以计算出和的距离了。求出两个节点的根据上面

的性质可以直接利用线段树求区间最大值做出来。

思考如何计算每个节点的深度。根据上面的性质我们可以得到一个略

的做法:不断寻找每个节点的父亲结点是谁。简单分析这个的方法,可

以发现一个结点的所有祖先结点为在序列中以该结点为起点向左的

(最长上升子序列)和向右的。这样我们的任务就变成给定一个序列中的位

置,问以它为起点向左的和向右的的长度。

边”的点描述更为恰当)里的最大值为起点,向右的的结点在自身区间范围

内数量。记这个值为。假设已经求出,那么如何计算某个区间以

某个值为起点时长度?用以下伪代码表示:

其中计算区间起始值为时在自己区间内的的长度。

其中如果起始值大于自己左区间最大值时,显然左区间答案为,所以仅计算右

区间。否则计算过左子区间后此时入右子区间的应该是左子区间的

最大值,这个可以直接返回的标记即可。复杂度为

我们再利用同理实现操作,那么如何求某个的深度呢?

文档评论(0)

kay5620 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

版权声明书
用户编号:8001056127000014

1亿VIP精品文档

相关文档