小团有一棵树,这棵树有n个节点,编号为1-n。每个节点上有一个值 a_i 。1号节点为整棵树的根。 现在,小团给小美一个难题:小美每次可以操作一个节点x,将 a_x 变为 a_x 1 ,保持x所有的儿子不变,将x所有儿子的儿子 a_y 变为 a_y 1 ,保持所有的儿子的儿子的儿子不变,以此类推。 代表位运算异或。 小团希望小美用尽可能少的次数,将所有的 a_i 变为 b_i ,请帮助小美计算这个最少的次数。 数据保证在有限步数内,能够将所有的 a_i 变为 b_i
输入第一行包含一个整数n,代表节点数。 接下来n-1行,每行两个整数 u_i, v_i ,代表树上的一条边 接下来一行,一共n个数,第i个数代表 a_i 。 接下来一行,一共n个数,第i个数代表 b_i 。
输出包含一行一个数,即小美的最少操作次数。
3 1 2 2 3 4 5 1 5 5 1
2
考点:树
限制 1 秒 / 256MB | 标准输入输出
推荐方向:树
本题切入点
每次操作是把某节点的同深度后代全体异或 1,用树上差分/按深度分层统计每个节点需要的操作次数。
树结构上的遍历(DFS 求子树信息 / BFS 求层序),多数树题是「后序遍历 + 回溯」。
思路框架(树 通法 · 非本题专属)
实现要点:递归深度可能到 1e5,注意递归爆栈;必要时改迭代或调整递归深度。
复杂度:时间 O(n) | 空间 O(n)
该范式的通法易错点
样例 1:输入 3 / 1 2 / 2 3 / 4 5 1 / 5 5 1 → 输出 2
小美需要操作两次,第一次操作1号节点,三个节点的权值变为5 5 0,第二次操作3号节点,三个节点的权值变为5 5 1
解析由校招宝本地引擎整理(依据源站考点标签 / 人工判题标注 / 题面规模信号),非官方题解,仅供思路参考。
本题来源:美团2023校招笔试-编程题(算法编程题)。