华为OD-分积木/分苹果

题目描述

哥哥弟弟分一堆积木,每块积木重量不同。弟弟要求平分两组,每组数量可以不同但总重量必须相等。

然而弟弟只会二进制并且加法不进位。例如三块积木 3,5,6 分成两组 [3] 和 [5,6]

弟弟认为 5(二进制1001)加上6(二进制1010)是0011:

1001

1010


0011

然后 3 的二进制也是 0011,所以弟弟认为两组积木等重,接受这种分配方案。哥哥实际能分到 5+6=11 块积木。

要求输出哥哥能拿的最大实际重量。如果给定的积木没法按弟弟视角分成重量相等的两组,就输出'NO'。

示例一

输入

复制代码
5,6,3

输出

复制代码
11

代码实现

python 复制代码
# coding:utf-8
# 分积木/分苹果
# https://zhuanlan.zhihu.com/p/521401344?utm_id=0
# https://www.nowcoder.com/discuss/353159159166214144


class Solution:
    def allocateBlock(self, s):
        aweight = 0
        s = list(map(int, s))
        for i in range(len(s)):
            aweight = aweight ^ s[i]
        if aweight == 0:
            s.sort(reverse=True)
            s.pop()
            return sum(s)
        return -1


if __name__ == '__main__':
    s = list(input('input:').split(' '))
    solution = Solution()
    print(solution.allocateBlock(s))
相关推荐
我是菜鸟0713号9 分钟前
Qt + Python 算法集成的一种低耦合实践:FastAPI 服务化方案
python·qt·fastapi
我是一只小青蛙88811 分钟前
TraeCNIDE Python开发全流程指南
python
欣然~17 分钟前
法律案例 PDF 批量转 TXT 工具代码
linux·前端·python
少林码僧22 分钟前
2.30 传统行业预测神器:为什么GBDT系列算法在企业中最受欢迎
开发语言·人工智能·算法·机器学习·ai·数据分析
豆沙沙包?22 分钟前
2026年--Lc343-1926. 迷宫中离入口最近的出口(图 - 广度优先搜索)--java版
java·算法·宽度优先
超级大福宝34 分钟前
【力扣200. 岛屿数量】的一种错误解法(BFS)
数据结构·c++·算法·leetcode·广度优先
独自破碎E34 分钟前
【动态规划=递归+记忆化存储】跳台阶
算法·动态规划
季布,40 分钟前
本地Windows测试:钉钉群消息/文件传输到Python服务(完整教程)
windows·python·钉钉
zm-v-159304339861 小时前
最新AI-Python自然科学领域机器学习与深度学习技术
人工智能·python·机器学习
qwerasda1238521 小时前
Mask-RCNN右转交通标志识别训练与优化
python