站外数据结构题求助
  • 板块学术版
  • 楼主phzhongchen
  • 当前回复0
  • 已保存回复0
  • 发布时间2025/8/1 16:59
  • 上次更新2025/8/1 22:14:56
查看原帖
站外数据结构题求助
1060068
phzhongchen楼主2025/8/1 16:59

求助站外题,有没有大佬能切

说下思路即可,非常感谢!

题目描述:

给定一个长度为n的排列p,有q次询问

每次询问区间[l,r](下标从1开始)单独拿出来构成的笛卡尔树的节点深度和,定义根节点深度为1。

笛卡尔树是有堆性质的二叉树,任意节点的值均小于其左儿子和右儿子的值,对一个序列建的笛卡尔树的中序遍历即为原序列。

对一个无重复数字的序列递归建笛卡尔树的过程如下:

1.找出区间最小值c,设其位置为mid;

2.对[l,mid一1]和[mid+1,r]建笛卡尔树,设根为ls和rs;

3.将mid的左儿子设为ls,右儿子设为rs。

对于100%的数据,保证1 < n, q < 100000,1<p_i<n, 单次询问中1<l<r<n。

附样例: 许多样例

谢谢!

2025/8/1 16:59
加载中...