A5803 | 「NOI2013」树的计数
时间限制1s
内存限制256MB
通过 / 提交0/0
题目描述
我们知道一棵有根树可以进行深度优先遍历(DFS)以及广度优先遍历(BFS)来生成这棵树的 DFS 序以及 BFS 序。两棵不同的树的 DFS 序有可能相同,并且它们的 BFS 序也有可能相同,例如下面两棵树的 DFS 序都是

现给定一个 DFS 序和 BFS 序,我们想要知道,符合条件的有根树中,树的高度的平均值。即,假如共有 $K$ 棵不同的有根树具有这组 DFS 序和 BFS 序,且他们的高度分别是 $h_1, h_2, \ldots, h_K$,那么请你输出:
$$ \frac{h_1+h_2+\ldots+h_K}K $$
1 2 4 5 3,BFS 序都是 1 2 3 4 5。
现给定一个 DFS 序和 BFS 序,我们想要知道,符合条件的有根树中,树的高度的平均值。即,假如共有 $K$ 棵不同的有根树具有这组 DFS 序和 BFS 序,且他们的高度分别是 $h_1, h_2, \ldots, h_K$,那么请你输出:
$$ \frac{h_1+h_2+\ldots+h_K}K $$
输入格式
第一行包含 $1$ 个正整数 $n$,表示树的节点个数。
第二行包含 $n$ 个正整数,是一个 $1 \ldots n$ 的排列,表示树的 DFS 序。
第三行包含 $n$ 个正整数,是一个 $1 \ldots n$ 的排列,表示树的 BFS 序。
输入保证至少存在一棵树符合给定的两个序列。
第二行包含 $n$ 个正整数,是一个 $1 \ldots n$ 的排列,表示树的 DFS 序。
第三行包含 $n$ 个正整数,是一个 $1 \ldots n$ 的排列,表示树的 BFS 序。
输入保证至少存在一棵树符合给定的两个序列。
输出格式
输出 $1$ 个实数,四舍五入保留恰好三位小数,表示树高的平均值。
如果输出文件的答案与标准输出的差不超过 $0.001$,则将获得该测试点上的分数,否则不得分。
对于 $20\%$ 的测试数据,满足:$n \le 10$;
对于 $40\%$ 的测试数据,满足:$n \le 100$;
对于 $85\%$ 的测试数据,满足:$n \le 2000$;
对于 $100\%$ 的测试数据,满足:$2 \le n \le 200\ 000$。
对于 $20\%$ 的测试数据,满足:$n \le 10$;
对于 $40\%$ 的测试数据,满足:$n \le 100$;
对于 $85\%$ 的测试数据,满足:$n \le 2000$;
对于 $100\%$ 的测试数据,满足:$2 \le n \le 200\ 000$。
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?