分苹果_100分_A/B卷复用_位运算/异或运算

2023-11-01

分苹果

题目描述:

  A、B两个人把苹果分为两堆,
  A希望按照他的计算规则等分苹果,他的计算规则是按照二进制加法计算,并且不计算进位 12+5=9(1100 + 0101 = 9),
  B的计算规则是十进制加法,包括正常进位,B希望在满足A的情况下获取苹果重量最多。

输入苹果的数量和每个苹果重量,输出满足A的情况下B获取的苹果总重量。
如果无法满足A的要求,输出-1。

数据范围:
  1 <= 总苹果数量 <= 20000
  1 <= 每个苹果重量 <= 10000

输入输出描述:

输入描述:

  输入第一行是苹果数量:3
  输入第二行是每个苹果重量:3 5 6

输出描述:

  输出第一行是B获取的苹果总重量:11

示例1:

输入:
	3
	3 5 6
输出:
	11

示例2:

输入:
	8
	7258 6579 2602 6716 3050 3564 5396 1773
输出:
	35165

解题思路:

1:明确不进位的二进制加法,即异或操作
2:A按照二进制加法计算,且要求等分:是否能等分,取决于所有苹果的重量做异或运算后结果是否为0
异或运算

  比如:12 + 5 = 9≠0(1100 + 0101 = 9),故当苹果为:12、5时,不能按照A的要求等分。
  比如:12 + 5 + 9 = 0(1100 + 0101 + 1001 = 0),故当苹果为:12、5、9时,可以能按照A的要求等分。此时可以分为:A-5,B-21

故解题思路为:计算出所有苹果的异或结果,同时记录下最轻的苹果重量min:
  ①:如果异或结果为0,说明可以按照A的规则分,A分到最轻的苹果,剩余苹果都归B。(异或运算的结合律:(a ^ b) ^ c = a ^ (b ^ c))
  ②:如果异或结果不为0,说明不可以按照A的规则均分,输出-1。

异或操作:

  异或运算,也称为“异或操作”或“异或运算符”,是一种逻辑运算,用于比较两个值的位(二进制位)是否不同。异或运算的结果为1表示对应的位不同,结果为0表示对应的位相同
异或运算的符号通常用“^”表示,例如:
  0 ^ 0 = 0
  0 ^ 1 = 1
  1 ^ 0 = 1
  1 ^ 1 = 0
异或运算还具有一些重要的性质:
  交换律:a ^ b = b ^ a
  结合律:(a ^ b) ^ c = a ^ (b ^ c)
  自反性:a ^ a = 0
  零值性:a ^ 0 = a
  幂等性:a ^ b ^ b = a
  逆运算:对于任意固定的数 b,a ^ b ^ b = a
在计算机编程中,异或运算的应用非常广泛,例如:
  交换两个变量的值,无需使用临时变量:a = a ^ b; b = a ^ b; a = a ^ b;
  判断奇偶性:一个数与1进行异或操作,结果为1表示奇数,结果为0表示偶数。
  用于加密和校验算法,如校验和、CRC(循环冗余校验)等。
  异或运算只关注对应位的值是否不同,而不关心具体的数值。

代码:

public static void main(String[] args) {
	Scanner scanner = new Scanner(System.in);
	int n = Integer.parseInt(scanner.nextLine());
	int[] weights = Arrays.stream(scanner.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

	int aw = 0;
	int bw = 0;
	int min = Integer.MAX_VALUE;
	for (int i = 0; i < n; i++) {
		// 不进位的二进制加法,即:做异或操作
		aw ^= weights[i];
		bw += weights[i];
		min = Math.min(weights[i], min);
	}

	if (aw == 0) {
		System.out.println(bw - min);
	} else {
		System.out.println(-1);
	}
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

分苹果_100分_A/B卷复用_位运算/异或运算 的相关文章

  • Java中ArrayList的交集和并集

    有什么方法可以做到这一点吗 我正在寻找 但没有找到 另一个问题 我需要这些方法 以便我可以过滤文件 有些是AND过滤器 有些是OR过滤器 就像集合论中的那样 所以我需要根据所有文件和保存这些文件的联合 相交 ArrayList 进行过滤 我
  • Java中有没有一种方法可以通过名称实例化一个类?

    我正在寻找问题 从字符串名称实例化一个类 https stackoverflow com questions 9854900 instantiate an class from its string name它描述了如何在有名称的情况下实例
  • 如何让 BlazeDS 忽略属性?

    我有一个 java 类 它有一个带有 getter 和 setter 的字段 以及第二对 getter 和 setter 它们以另一种方式访问 该字段 public class NullAbleId private static final
  • Mockito:如何通过模拟测试我的服务?

    我是模拟测试新手 我想测试我的服务方法CorrectionService correctPerson Long personId 实现尚未编写 但这就是它将执行的操作 CorrectionService将调用一个方法AddressDAO这将
  • Junit:如何测试从属性文件读取属性的方法

    嗨 我有课ReadProperty其中有一个方法ReadPropertyFile返回类型的Myclass从属性文件读取参数值并返回Myclass目的 我需要帮助来测试ReadPropertyFile方法与JUnit 如果可能的话使用模拟文件
  • Spring AspectJ 在双代理接口时失败:无法生成类的 CGLIB 子类

    我正在使用Spring的
  • 过滤两次 Lambda Java

    我有一个清单如下 1 2 3 4 5 6 7 和 预期结果必须是 1 2 3 4 5 6 7 我知道怎么做才能到7点 我的结果 1 2 3 4 5 6 我也想知道如何输入 7 我添加了i gt i objList size 1到我的过滤器
  • 谷歌应用程序引擎会话

    什么是java应用程序引擎 默认会话超时 如果我们将会话超时设置为非常非常长的时间 会不会产生不良影响 因为谷歌应用程序引擎会话默认情况下仅存储在数据存储中 就像facebook一样 每次访问该页面时 会话仍然永远存在 默认会话超时设置为
  • 将流转换为 IntStream

    我有一种感觉 我在这里错过了一些东西 我发现自己做了以下事情 private static int getHighestValue Map
  • 在 junit 测试中获取 javax.lang.model.element.Element 类

    我想测试我的实用程序类 ElementUtils 但我不知道如何将类作为元素获取 在 AnnotationProcessors 中 我使用以下代码获取元素 Set
  • 帮助将图像从 Servlet 获取到 JSP 页面 [重复]

    这个问题在这里已经有答案了 我目前必须生成一个显示字符串文本的图像 我需要在 Servlet 上制作此图像 然后以某种方式将图像传递到 JSP 页面 以便它可以显示它 我试图避免保存图像 而是以某种方式将图像流式传输到 JSP 自从我开始寻
  • 内部类的构造函数引用在运行时失败并出现VerifyError

    我正在使用 lambda 为内部类构造函数创建供应商ctx gt new SpectatorSwitcher ctx IntelliJ建议我将其更改为SpectatorSwitcher new反而 SpectatorSwitcher 是我正
  • Java ResultSet 如何检查是否有结果

    结果集 http java sun com j2se 1 4 2 docs api java sql ResultSet html没有 hasNext 方法 我想检查 resultSet 是否有任何值 这是正确的方法吗 if resultS
  • 如何访问JAR文件中的Maven资源? [复制]

    这个问题在这里已经有答案了 我有一个使用 Maven 构建的 Java 应用程序 我有一个资源文件夹com pkg resources 我需要从中访问文件 例如directory txt 我一直在查看各种教程和其他答案 但似乎没有一个对我有
  • Java 和 Python 可以在同一个应用程序中共存吗?

    我需要一个 Java 实例直接从 Python 实例数据存储中获取数据 我不知道这是否可能 数据存储是否透明 唯一 或者每个实例 如果它们确实可以共存 都有其单独的数据存储 总结一下 Java 应用程序如何从 Python 应用程序的数据存
  • logcat 中 mSecurityInputMethodService 为 null

    我写了一点android应显示智能手机当前位置 最后已知位置 的应用程序 尽管我复制了示例代码 并尝试了其他几种解决方案 但似乎每次都有相同的错误 我的应用程序由一个按钮组成 按下按钮应该log经度和纬度 但仅对数 mSecurityInp
  • 使用 AsyncTask 传递值

    我一直在努力解决这个问题 但我已经到了不知道该怎么办的地步 我想做的是使用一个类下载文件并将其解析为字符串 然后将该字符串发送到另一个类来解析 JSON 内容 所有部件都可以单独工作 并且我已经单独测试了所有部件 我只是不知道如何将值发送到
  • 不接受任何内容也不返回任何内容的函数接口[重复]

    这个问题在这里已经有答案了 JDK中是否有一个标准的函数式接口 不接受也不返回任何内容 我找不到一个 像下面这样 FunctionalInterface interface Action void execute 可运行怎么样 Functi
  • 双枢轴快速排序和快速排序有什么区别?

    我以前从未见过双枢轴快速排序 是快速排序的升级版吗 双枢轴快速排序和快速排序有什么区别 我在 Java 文档中找到了这个 排序算法是双枢轴快速排序 作者 弗拉基米尔 雅罗斯拉夫斯基 乔恩 本特利和约书亚 布洛赫 这个算法 在许多数据集上提供
  • Spring Rest 和 Jsonp

    我正在尝试让我的 Spring Rest 控制器返回jsonp但我没有快乐 如果我想返回 json 但我有返回的要求 完全相同的代码可以正常工作jsonp我添加了一个转换器 我在网上找到了用于执行 jsonp 转换的源代码 我正在使用 Sp

随机推荐

  • gitlab代码上传方式1

    本地代码上传到gitlab上操作流程 自我总结 1 在gitlb上新建项目 点击New project 首次将代码上传到gitlab上时 先配置Settings中的SSH Keys 2 配置SSH Keys 那么SSH Keys是怎么获得的
  • 推荐几款可以直接在手机上编程的app(包含Java、C、Python等)

    这里介绍几款可以在手机上编程的app 分别是 1 java和Android AIDE集成开发环境 2 C语言 c语言编译器 C4droid 3 python QPython3 Termux 4 CSS HTML JavaScript HTM
  • python 预测任意天后股票数据_机器学习交易——如何使用回归预测股票价格?【翻译】...

    前几天 我读了一篇关于人工智能到目前为止是如何发展的以及它将走向何方的文章 我被吓了一跳 我也很难理解作者所描绘的未来的可能性 这是人工智能在医学领域应用的可能性之一 外科医生可以用她的运动皮层控制一个机器手术刀 而不是用她的手 她可以从手
  • 团队管理那点破事,OKR绩效、核心人才、面试、技术分享、研发流程

    微信搜索 微观技术 关注这个不喜欢内卷的程序员 精彩文章汇总 GitHub https github com aalansehaiyang technology talk Star 12K 汇总java生态圈常用技术框架 开源中间件 系统架
  • Redisson分布式锁

    目录 一 分布式锁 1 分布式锁的设计原则 2 分布式锁的实现方案 二 Redisson 三 Redisson分布式锁 1 引入Redisson依赖 2 配置Redis 3 注入RedissonClient 4 使用RLock 总结 一 分
  • 如何使用iAd在应用程序中展示Banner广告

    本文由 Da杯柠檬水 微博 翻译自 AppCoda 原文 Using iAd to Display Banner Ad in Your App 虽然 你可能即将开始开发下一个超级应用程序 你的一切规划和设计都已就绪 但还是有一件事可能你并没
  • Linux内核机制之等待队列

    Linux内核的等待队列是以双循环链表为基础数据结构 与进程调度机制紧密结合 能够用于实现核心的异步事件通知机制 在中 等待队列在源代码树中 这是一个通过连接的典型双循环链表 如下图所示 在这个链表中 有两种数据结构 等待队列头 wait
  • [区块链] 密码学中Hash算法(基础)

    在介绍Hash算法之前 先给大家来个数据结构中对hash表 散列表 的简单解释 然后我再逐步深入 讲解一下hash算法 一 Hash原理 基础篇 1 1 概念 哈希表就是一种以 键 值 key indexed 存储数据的结构 我们只要输入待
  • Node.js 获取当前时间

    1 安装依赖 npm install silly datetime 2 引入依赖 const sd require silly datetime 3 使用 const time sd format new Date YYYY MM DD H
  • IDEA远程断点调试jar包项目

    文章目录 前言 一 准备工作 1 jar包应用 1 IDEA配置 二 断点调试 1 运行jar包 2 访问接口 3 进来断点 三 注意点 总结 前言 springboot 项目在开发完 打成一个 jar 包 放到服务器运行时 如果报错了 怎
  • Java面试上岸秘籍!粉丝刷题一周换工作,爆笑嘲讽竟变大厂青睐

    封面来自一个粉丝的反馈 添加图片注释 不超过 140 字 可选 粉丝通过阿嘴的Java面试库换工作了 刷题一周搞定工作 一周前还被面试官嘲讽 我也替他感觉高兴 没想到题库能帮到他这么多 这是多大的回报率 他也已经成功证明了自己 说实话 像这
  • C++Primer学习笔记(11)

    这篇文章的内容是动态内存 这一块有点进阶了 是之前很少接触过的部分了 关注点有这几个 全局对象 局部对象 局部static对象 动态对象 提炼一下 静态内存 栈内存 自由空间 堆 不同的内存空间有相对应的对象 一 动态内存与智能指针 都是重
  • 【编译原理】SLR(1)分析方法(c++实现)

    基本流程 Created with Rapha l 2 2 0 输入文法 拓广文法 构造DFA 识别活前缀的自动机 SLR 1 分析表 SLR 1 分析输入串
  • 附加:在在下部分区/县(数据表)

    返回上篇文章 全国各省 市 区 全部 sql语句 https blog csdn net m0 55400356 article details 122144741 comments 22531263 附加 sql语句 六 在在下部分区 县
  • Zotero6.0时代来临!新的文献阅读生态

    zotero迎来6 0正式版的更新 内置PDF阅读器与笔记编辑器极大重构了我的文献阅读生态 本文记载了基于6 0版本的zotero配置过程 本文相干的软件与插件如下 相关软件 Zotero SumatraPDF Obsidian Subli
  • length、length()、size() 的区别

    Length 数组的大小 length 字符串的大小 size 集合类 map set list 的大小 length length是一个关键词 主要用于获取数组的长度 对于数组来说 length是一个公有的实例变量 通过数组对象的属性来获
  • 我想用cesium来实现模型压平,代码实现

    使用 Cesium 来实现模型压平可以通过使用其 API 来实现 主要包括 Cesium loadTerrain 和 Cesium sampleTerrainMostDetailed 两个函数
  • 关于git上传代码到云效,git下载云效代码到本地

    一 安装git Git官方下载地址 gt gt https git scm com downloads Standalone Installer 一直点击next就安装好了 根据自己电脑更改安装路径 鼠标右击电脑主屏幕中有 Git命令 说明
  • Mac Navicat12.0.22 安装手册和操作说明

    小编的系统是MacOS Catalina10 15 4 Navicat Premium Mac 12 0 22 一 安装 首先 带大家了解下安装大致流程 安装包的准备 安装 验证 Navicat Premium Mac 12 0 22下载地
  • 分苹果_100分_A/B卷复用_位运算/异或运算

    分苹果 题目描述 A B两个人把苹果分为两堆 A希望按照他的计算规则等分苹果 他的计算规则是按照二进制加法计算 并且不计算进位 12 5 9 1100 0101 9 B的计算规则是十进制加法 包括正常进位 B希望在满足A的情况下获取苹果重量