时间限制:C/C++ 1秒,其他语言 2秒
空间限制:C/C++262144K,其他语言524288K
64bit IO Format:%lld
语言限定: C(clang11), C++(clang++11), Pascal(fpc 3.0.2), Java(javac 1.8), Python2(2.7.3), PHP(7.4.7), C#(mcs5.4), ObjC(gcc 5.4), Pythen3(3.9), JavaScript Node(12.18.2), JavaScript V8(6.0.0), Sqlite(3.7.9), R(4.0.3), Go(1.14.4), Ruby(2.7.1), Swift(5.3), matlab(Octave 5.2), Pypy2(pypy2.7.13), Pypy3(pypy3.6.1), Rust(1.44), Scala(2.11.12), Kotlin(1.4.10), Groovy(3.0.6), TypeScript(4.1.2), Mysql(8.0)
题目描述
A、B两个人把苹果分为两堆,A希望按照他的计算规则等分苹果,
他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9),
B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。
输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。
如果无法满足A的要求,输出-1。
数据范围
1 <= 总苹果数量 <= 20000
这道华为在线测评(OD)题目要求在遵循二进制加法不进位规则下,将苹果分成两堆,使得A、B两人中B能获得最大重量。通过计算苹果重量的异或和来判断是否可行,若异或和为0,则可以通过调整分配策略使B获取最大重量。解题方法包括计算所有重量的异或和以及寻找最小重量,以求得B的最大重量。主要考察位运算知识。
订阅专栏 解锁全文
342

被折叠的 条评论
为什么被折叠?



