A5655 | 「NOIP2024」树上查询
时间限制2s
内存限制512MB
通过 / 提交0/0
题目描述
有一天小 S 和她的朋友小 N 一起研究一棵包含了 $n$ 个结点的树。
这是一棵有根树,根结点编号为 $1$,每个结点 $u$ 的深度 $\text{dep}_ u$ 定义为 $u$ 到 $1$ 的简单路径上的**结点数量**。
除此之外,再定义 $\operatorname{LCA*}(l, r)$ 为编号在 $[l, r]$ 中所有结点的最近公共祖先,即 $l, l + 1, \dots , r$ 的公共祖先结点中深度最大的结点。
小 N 对这棵树提出了 $q$ 个询问。在每个询问中,小 N 都会给出三个参数 $l, r, k$,表示他想知道 $[l, r]$ 中任意长度大于等于 $k$ 的连续子区间的最近公共祖先深度的最大值,即
$$\max_{l\leq l'\leq r'\leq r \land r'-l'+1\ge k}\text{dep}_ {\operatorname{LCA*}(l', r')}$$
你的任务是帮助小 S 来回答这些询问。
这是一棵有根树,根结点编号为 $1$,每个结点 $u$ 的深度 $\text{dep}_ u$ 定义为 $u$ 到 $1$ 的简单路径上的**结点数量**。
除此之外,再定义 $\operatorname{LCA*}(l, r)$ 为编号在 $[l, r]$ 中所有结点的最近公共祖先,即 $l, l + 1, \dots , r$ 的公共祖先结点中深度最大的结点。
小 N 对这棵树提出了 $q$ 个询问。在每个询问中,小 N 都会给出三个参数 $l, r, k$,表示他想知道 $[l, r]$ 中任意长度大于等于 $k$ 的连续子区间的最近公共祖先深度的最大值,即
$$\max_{l\leq l'\leq r'\leq r \land r'-l'+1\ge k}\text{dep}_ {\operatorname{LCA*}(l', r')}$$
你的任务是帮助小 S 来回答这些询问。
输入格式
从文件
输入的第一行包含一个正整数 $n$,表示树的结点数。
接下来 $n - 1$ 行,每行包含两个正整数 $u, v$,表示存在一条从结点 $u$ 到结点 $v$ 的边。
第 $n + 1$ 行包含一个正整数 $q$,表示询问的数量。
接下来 $q$ 行,每行包含三个正整数 $l, r, k$,描述了一次询问。
query.in 中读入数据。输入的第一行包含一个正整数 $n$,表示树的结点数。
接下来 $n - 1$ 行,每行包含两个正整数 $u, v$,表示存在一条从结点 $u$ 到结点 $v$ 的边。
第 $n + 1$ 行包含一个正整数 $q$,表示询问的数量。
接下来 $q$ 行,每行包含三个正整数 $l, r, k$,描述了一次询问。
输出格式
输出到文件
对于每次询问输出一行,包含一个整数,表示对应的答案。
query.out 中。对于每次询问输出一行,包含一个整数,表示对应的答案。
输入输出样例
输入 #1
6 5 6 6 1 6 2 2 3 2 4 3 2 5 2 1 4 1 1 6 3
输出 #1
3 4 3
暂无题解
C++ 编辑器
输入
输出
可保存默认模板;新题优先使用已保存模板。
当前快捷键仅展示,暂不支持修改。
- 撤销
Ctrl / ⌘ + Z - 重做
Ctrl / ⌘ + Y - 查找
Ctrl / ⌘ + F - 全选
Ctrl / ⌘ + A - 复制
Ctrl / ⌘ + C - 剪切
Ctrl / ⌘ + X - 粘贴
Ctrl / ⌘ + V - 自动排版
工具栏排版按钮 - 草稿保存
编辑时自动保存到本机
历史
提交记录
状态说明时间源码
AI
作答助手
你好,我是作答助手。可以问思路、复杂度、样例含义或代码报错原因;不会直接给出完整 AC 代码。
确定要清空代码吗?