CF1210B Marcin and Training Camp

题目描述

Marcin 是他所在大学的教练。有 $n$ 名学生想要参加训练营。Marcin 是一位聪明的教练,所以他只想派出那些能够彼此和谐相处的学生。 我们来关注这些学生。他们的编号为 $1$ 到 $n$。每个学生可以用两个整数 $a_i$ 和 $b_i$ 描述;$b_i$ 表示第 $i$ 个学生的能力值(数值越大越好)。此外,有 $60$ 种已知算法,编号为 $0$ 到 $59$。如果第 $i$ 个学生掌握第 $j$ 种算法,那么 $a_i$ 的二进制表示中的第 $j$ 位($2^j$)为 $1$,否则为 $0$。 如果学生 $x$ 掌握某种学生 $y$ 不会的算法,则 $x$ 认为自己比 $y$ 更优秀。注意,两名学生可能会互相认为自己比对方优秀。如果一个学生组内没有任何学生认为自己比组内所有其他人都优秀,那么这个学生组可以和谐相处。 Marcin 想要派出一个至少包含两名学生、能够和谐相处且能力值之和最大的学生组。请问这个能力值之和最大是多少?

输入格式

第一行包含一个整数 $n$($1 \leq n \leq 7000$),表示有兴趣参加训练营的学生人数。 第二行包含 $n$ 个整数,第 $i$ 个为 $a_i$($0 \leq a_i < 2^{60}$)。 第三行包含 $n$ 个整数,第 $i$ 个为 $b_i$($1 \leq b_i \leq 10^9$)。

输出格式

输出一个整数,表示能够和谐相处的学生组中,能力值之和的最大值。如果不存在至少包含两名学生的和谐学生组,输出 $0$。

说明/提示

在第一个样例中,最优方案是派出第 $1$、第 $2$ 和第 $3$ 个学生参加训练营。也可以只派出第 $1$ 和第 $3$ 个学生,但他们的能力值之和会更小。 在第二个样例中,任意包含至少两名学生的小组中,总会有人认为自己比组内所有其他人都优秀。 由 ChatGPT 4.1 翻译