OD统一考试:分苹果
题目
AB
两个人把苹果分为两堆,A
希望按照他的计算规则等分苹果
他的计算规则是按照二级制加法计算,并且不计算进位12+5=9(1100+0101=9)
,B
的计算规则是十进制加法,包括正常进位,B
希望在满足A
的情况下获取苹果重量最多
输入苹果的数量和每个苹果重量
输出满足 A
的情况下 B
获取的苹果总重量
如果无法满足A
的要求 输出-1
数据范围:
1 <= 苹果数量 <= 20000
1 <= 每个苹果重量 <= 10000
输入
输入第一行是苹果数量:3
输入第二行是每个苹果重量:3 5 6
输出描述
输出第一行是 B 获取的苹果总重量:11
示例一
输入
3
3 5 6
输出
11
示例二
输入
8
7258 6579 2602 6716 3050 3564 5396 1773
输出
35165
说明
按照A
的计算方法5+6=3
(101+110
不算进位的话,值为3
)
编码思路
本题的主要目的是在给定的整数数组中找到两个非空的、不相交的子集,使得它们的异或和相等,且它们的和最大。
该算法的基本思路是使用贪心的方法将输入的整数从小到大排序,然后通过遍历数组,尝试划分它为两个子数组,并计算每个子数组的和及异或和,如果两个子数组的异或和相等,则比较它们的和,并更新最大和。
核心知识点
位运算,数组遍历,贪心算法。