#P5854. 【模板】笛卡尔树(Cartesian Tree)
0
【模板】笛卡尔树(Cartesian Tree)
【模板】笛卡尔树(Cartesian Tree)
题目描述
给定一个 的排列 ,构建其笛卡尔树。
即构建一棵二叉树,满足:
- 每个节点的编号满足二叉搜索树的性质。
- 节点 的权值为 ,每个节点的权值满足小根堆的性质。
输入格式
第一行一个整数 。
第二行一个排列 。
输出格式
设 分别表示节点 的左右儿子的编号(若不存在则为 )。
一行两个整数,分别表示 和 。
样例输入 #1
5
4 1 3 2 5
样例输出 #1
19 21
数据范围
【样例解释】
【数据范围】
对于 的数据,。
对于 的数据,。
对于 的数据,。
对于 的数据,。
对于 的数据,。
知识点与难度
本题涉及的知识点从属于 CSP-S,难度(CF Rating):1700。
测试点分布
| Subtask | 分值 | 测试点编号 | 说明 |
|---|---|---|---|
| 0 | 10 | 1 | 样例 |
| 1 | 20 | 2~7 | 小规模 n≤1000 / 特殊: n=1 及全升序/全降序退化链 |
| 2 | 8~13 | 中等规模 n≤100000 | |
| 3 | 25 | 14~19 | 大规模 n≤500000 交替锯齿排列与分块单调排列 |
| 4 | 20~25 | 满规模 n=1000000 单调栈线性建树压力测试 |
出处:原题链接