给你一棵以T为根,有n个节点的树。(n为奇数)每个点有一个价值V,并且每个点有一个特征值P。每个点的特征值P为:以这个点为根的子树的所有点(包括根)的价值的和。现在牛牛想知道这n个点对应的特征值的中位数是多少,你能告诉牛牛吗?
第一行两个正整数,分别代表T和n。 接下来一行共n个正整数,分别代表编号为i的点的价值V[i]。 接下来n-1行,每行两个正整数u,v,代表u和v之间有一条边相连。 3≤ n≤ 5e5;1≤ T≤ n;1≤ V[i]≤ 1e9;1≤ u,v≤ n
输出一行,共一个正整数,代表n个点特征值的中位数是多少。
1 3 1 10 100 1 2 2 3
110
2 5 1 10 100 1000 10000 1 2 3 2 3 4 5 3
10000
考点:图
数据规模 n ≤ 500000 | 限制 1 秒 / 256MB | 标准输入输出
参考方向:图
把关系抽象成点与边,再按问的类型选遍历/最短路/连通性算法。
思路框架(图 通法 · 非本题专属)
实现要点:注意是有向图还是无向图,无向图加边记得双向。
复杂度:时间 O(V+E) 遍历 / O(E log V) Dijkstra | 空间 O(V+E)
该范式的通法易错点
对照本题
本题在源数据中没有官方考点标签,方向由题面特征推断,仅供参考。
样例 1:输入 1 3 / 1 10 100 / 1 2 / 2 3 → 输出 110
点1对应的特征值为111,点2对应的特征值为110,点3对应的特征值为100,中位数为110。
样例 2:输入 2 5 / 1 10 100 1000 10000 / 1 2 / 3 2 / 3 4 / 5 3 → 输出 10000
点1对应的特征值为1,点2对应的特征值为11111,点3对应的特征值为11100,点4对应的特征值为1000,点5对应的特征值为10000,中位数是10000。
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:2024年秋招-贝壳找房-前端工程师-第二批笔试;2024年秋招-贝壳找房-测试开发工程师-第二批笔试。