河南省第十四届 ICPC 大学生程序设计竞赛
The 2023 ICPC China Henan Provincial Programming Contest 2023/05/21
Problem C. 结对编程
Input le: standard input
Output le: standard output
Time limit: 1 second
Memory limit: 512 megabytes
A 公司是一家主营软件开发的公司。公司内有 n 名员工,编号为 1 到 n 的整数,除了 1 号老板外每
名员工都有一个直接上级和若干个间接上级 (上级的上级)。
这天 A 公司正在进行结对编程能力测试。为了尽量避免由于员工个人因素影响测试的结果,本次测
试采用随机抽人的方式。具体方法是由公司的所有非空员工子集中等概率地取出一个子集。然后找出该
子集的级别最低的共同上级作为团队指挥(1 号老板的级别是最高的)。当然,该团队指挥有可能在也有
可能不在该子集中,在子集中的话就参与结对编程,不在的话就只负责指挥。
由于你大学参加过 ICPC 比赛,编程能力比较强,公司派你写一段程序来完成这个选人的过程。但
是你最近疏于编程训练,头脑不清晰,犯了个大错误。你的代码里居然真的直接等概率取出一个非空子
集,却忽略了这样一个事实:选出的子集人数必须是偶数,才能安排接下来的结对编程活动!
但是事到如今也无法挽救了。你了解到公司里每个职员都有一个可以量化的权限,当职员 i 被选作
团队指挥时,如果你的程序输出了一个合理的结果(偶数个人),他会奖励你 a
i
元作为酬劳,反之如果你
的程序输出了一个不合理的结果(奇数个人),那他会罚你 a
i
元作为赔偿。
那么,请你为自己计算出:你期望会损失多少钱?为了避免浮点误差,请你输出期望损失的钱数 ×(2
n
−
1) 的结果,可以证明这是个整数。同时,你的输出也有可能是个负数,此时说明期望会赚到钱。
Input
第一行输入 n,满足 1 ≤ n ≤ 2 × 10
5
代表公司内员工的个数。
其后一行 n-1 个整数,从左到右代表 2 号员工到 n 号员工的上级是几号。
其后一行 n 个整数,从左到右代表 1 号到 n 号员工的权限值 a
i
,满足 0 ≤ a
i
< 10
5
Output
请输出一个整数,表示你期望损失的钱数 ×(2
n
− 1) 的结果。
Example
standard input standard output
3
1 1
1 2 3
4
Explanation
对于样例,有以下情况:
选出 1,指挥为 1,赔偿 1 元
Page 3 of 16