分积木 - 华为OD机试刷题记录

题目描述

Solo和koko是两兄弟,妈妈给了他们一大堆积木,每块积木上都有自己的重量。

现在他们想要将这些积木分成两堆。哥哥Solo负责分配,弟弟koko要求两个人获得的积木总重量“相等”(根据Koko的逻辑),个数可以不同,不然就会哭,但koko只会先将两个数转成二进制再进行加法,而且总会忘记进位(每个进位都忘记)。如当25(11101)加11(01011)时,koko得到的计算结果是18(10010):

 11001
+01011
--------
 10010

Solo想要尽可能使自己得到的积木总重量最大,且不让koko哭。

输入描述

第一行是一个整数N(2≤N≤100),表示有多少块积木;

第二行为空格分开的N个整数Ci(1≤Ci≤10^6),表示第i块积木的重量。

输出描述

如果能让koko不哭,输出Solo所能获得积木的最大总重量;否则输出“NO”。

用例1

输入

3
3 5 6

输出

11

参考题库

华为OD2025A卷目录

实现思路

  • 不进位的加法其实就是 异或计算
  • 按照题目要求最终弟弟和哥哥 分的积木重量的异或和 要想相等,假设为x, 那么所有积木的异或和x ^ x =0,所有积木的异或和必须为 0, 否则输出NO.
  • 另外一个数学定理x ^ 0 = x(交换律),我们的目的是让各个获得最多重要的苹果,所以给弟弟分一个最小重量积木 就行。

实现代码

#include<iostream>
#include<vector>
#include<string>
#include <utility> 
#include <sstream>
#include<algorithm>
#include<list>
#include<queue>
#include<map>
#include<set>
using namespace std;

int main() {
    int n;
    int minValue = 10000009;
    // 记录异或计算结果
    int sum = 0;
    // 记录实际重量和
    int totalWeight = 0;
    cin >> n;
    for (int i = 0; i < n; i++) {
        int tmp;
        cin >> tmp;
        sum ^= tmp;
        minValue = min(minValue, tmp);
        totalWeight += tmp;
    }
    // 不能平分
    if (sum != 0) {
        cout << "NO";
    } else {
        cout << totalWeight - minValue;
    }
    return 0;
}
#华为OD##华为OD2025A卷#
全部评论

相关推荐

华为员工,每年增加15000人左右,补充途径只有3种:1、校招8000人,难度中,22届毕业生特别多,其他大厂招的少,难度大了许多;2、OD转&nbsp;华为6000人,难度低,社招,工作内容、强度与&nbsp;华为员工一样,薪资待遇也基本一致;3、17级以上社招,难度高,简历筛选要求高,面试难度大,有大厂经历的可以走这条路,薪资待遇还是可以匹配的。华为OD是什么:OD,全称(Outsourcing&nbsp;Dispacth)模式,华为和德科联合招聘的简称。目前华为社招大多数是OD招聘,17级以下都为OD模式,OD模式也是华为提出的一种新的用工形式,定级是13-17级,属于华为储备人才,每年都会从OD项目挑优秀员工转为正编。华为OD值不值得,关注以下方面:1、收入:D1-D5&nbsp;五个级别,薪资10-40K左右,年终奖2-4个月,周六加班双倍工资,下个月发。社招入职OD会有一定薪资上涨,之后每年一次加薪,OD转华为一次加薪。2、技术成长:&nbsp;华为的研发流程、华为的学习平台,工作内容与华为员工一致,只要你愿意,成长空间很大。不少公司,入职一两年后,就没有多少成长了,华为氛围会推动着你,持续学习和成长。3、工作氛围:工作强度与华为员工一致,124晚9点,35晚6点,项目紧急的话,周六会安排加班,有些部门每年2-3个月过点前会比较忙,其他时间还好。平时的聚餐,体育活动,春游,秋游都挺多的,大家整体素质比较高,好相处。工作时间长了之后,会有一定的心里压力,催人前行,很锻炼人。华为员工也不会歧视OD的身份,如果有的话,我认为是个人的人品问题,这种人在哪都有!因人而异,具体情况具体分析:1、如果你是普通二本一本应届生,手里没有很好的offer,那么能有机会进OD已经是非常不错的选择,部分时期要求院校会放宽,刷下算法还是有很大希望进OD。2、如果你是985&nbsp;211拥有非常优秀的履历和开发经验是否选择od取决于两点:(1)手里有没有合适的offer,如果有果断放弃OD。(2)薪资超出手里现有offer的百分之30左右可以自由选择,高薪短期发展2年。#华为##华为od##华为od题库#
华为工作强度 1077人发布 投递华为等公司8个岗位
点赞 评论 收藏
分享
评论
3
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务