华为OD机试-开放日活动-2022Q4 A卷-Py/Java/JS
某部门开展Family Day开放日活动,其中有个从桶里取球的游戏,游戏规则如下:有N个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球,
每个小桶装的小球数量记录在数组 bucketBallNums 中,游戏开始时,要求所有桶的小球总数不能超过 SUM,
如果小球总数超过 SUM,则需对所有的小桶统一设置一个容量最大值 maxcapacity并需将超过容量最大值的小球拿出来,直至小桶里的小球数量小于 maxcapacity;请您根据输入的数据,计算从每个小桶里拿出的小球数量,
限制规则一:
所有所有小桶的小球总和小于 SUM,则无需设置容量值,并且无需从小桶中拿球出来,返回结果[];
限制规则二:
如果所有小桶的小球总和大于 SUM,则需设置容量最大值 maxcapacity并且需从小桶中拿球出来,返回从每个小桶拿出的小球数量组成的数组;
输入描述
第一行输入2个正整数,数字之间使用空格隔开,其中第一个数字表示 SUM ,第二个数字表示 bucketBallNums 数组长度:第二行输入N个正整数,数字之间使用空格隔开,表示 bucketBallNums 的每一项:
输出描述
数组剩余小球。
示例一
输入
14 7
2 3 2 5 5 1 4
输出
[0,1,0,3,3,0,2]
说明
小球总数为 22,sum=14,超出范围了,需从小桶取球,
maxCapacity=1,取出球后,桶里剩余小球总和为7,远小于 14 maxCapacity=2,取出球后,桶里剩余小球总和为13
maxCapacity=3,取出球后,桶里剩余小球总和为 16,大于14因此 maxCapacity为2,每个小桶小球数量大于2的都需要拿出来;
示例二
输入
3 3
1 2 3
输出
[0,1,2]
说明
小球总数为6,SUM=3,超出范围了,需从小桶取球 maxCapacity=1,则小球总数为3从0号桶取出0个球,从1号桶取出1个球,从2号桶取出2个球;
示例三
输入
6 2
3 2
输出
[]
说明
小球总数为5,SUM=6,在范围内,无需从小桶取球;
备注
1<= bucketBallNums[i] <= 10^9
1 <= bucketBallNums.length = N <= 10^5
1<= maxCapacity<= 10^9
1<= SUM <= 10^9
Java 代码
import java.util.Scanner;
import java.util.*;
import java.util.stream.Collectors;
import java.math.BigInteger;
import java.util.stream.IntStream;class Main {public static void main(String[] args) {// 处理输入Scanner in = new Scanner(System.in);int sum = in.nextInt();int nums = in.nextInt();int[] balls = new int[nums];int[] org_balls = new int[nums];for (int i = 0; i < nums; i++) {balls[i] = in.nextInt();org_balls[i] = balls[i];}int total = Arrays.stream(balls).sum();if (total <= sum) {System.out.println("[]");return;}Arrays.sort(balls);//二分法初始化int left = sum / nums;int right = balls[nums - 1];int[] result = new int[nums];for (int i = 0; i < nums; i++) {result[i] = org_balls[i] > left ? org_balls[i] - left : 0;}while (right > left+1){int mid = (right + left) / 2;int[] tmp = new int[nums];int temp_total = total;for (int i = 0; i < balls.length; i++) {int r = org_balls[i] > mid? org_balls[i] - mid: 0;temp_total -= r;tmp[i] = r;}if (temp_total > sum)right = mid;else if (temp_total < sum){left = mid;result = tmp;}else{result = tmp;break;}}System.out.println(Arrays.toString(result));}}
Python代码
import functools
import collections
import math
from itertools import combinations
from re import match# 处理输入
params = [int(x) for x in input().split(" ")]
total = params[0]
N = params[1]
balls = [int(x) for x in input().split(" ")]
origin_balls = []
for i in balls:origin_balls.append(i)
single_total = sum(balls)if(single_total <= total):print([])
else:#二分法初始化left = int(total / N)right = max(balls)result = [x - left if x > left else 0 for x in origin_balls]while (right > left+1):mid = int((right + left) / 2)temp = []for i in range(N):if(balls[i] > mid):temp.append(origin_balls[i] - mid)else:temp.append(0)if (single_total - sum(temp)>total):right = midelif (single_total -sum(temp)<total):left = midresult = tempelse:result = tempbreakprint(result)
JS代码
function main(sum, nums, balls ) {let total = eval(balls.join("+"))if (total <= sum) {console.log("[]")return}let org_balls = []for (let i=0;i<nums;i++){org_balls.push(balls[i])}balls.sort()//二分法初始化let left = sum / nums;let right = balls[nums - 1]let result = new Array(nums)for (let i = 0; i < nums; i++) {result[i] = org_balls[i] > left ? org_balls[i] - left : 0;}while (right > left+1){let mid = (right + left) / 2let tmp = new Array(nums)let temp_total = totalfor (let i = 0; i < balls.length; i++) {let r = org_balls[i] > mid? org_balls[i] - mid : 0;temp_total -= r;tmp[i] = r;}if (temp_total > sum)right = mid;else if (temp_total < sum){left = mid;result = tmp;}else{result = tmp;break;}}console.log(result)}main(3,3,[2,3,1])
相关文章:
华为OD机试-开放日活动-2022Q4 A卷-Py/Java/JS
某部门开展Family Day开放日活动,其中有个从桶里取球的游戏,游戏规则如下:有N个容量一样的小桶等距排开,且每个小桶都默认装了数量不等的小球, 每个小桶装的小球数量记录在数组 bucketBallNums 中,游戏开始时,要求所有…...
两亲性聚合物:Lauric acid PEG Maleimide,Mal-PEG-Lauric acid,月桂酸PEG马来酰亚胺,试剂知识分享
Lauric acid PEG Maleimide,Lauric acid PEG Mal| 月桂酸PEG马来酰亚胺 | CAS:N/A | 端基取代率:95%一、试剂参数信息: 外观(Appearance):灰白色/白色固体或粘性液体取决于分子量 溶解性&am…...
FB使用入口点函数例子
一、DLL的入口点 1.1 VFB的自带DLL模式入口 FB是把代码转成C(GCC编译)或者汇编(GAS编译)后编译的,本身就有一个main函数,所以在程序里其实不需要入口点,直接写就可以顺序执行,而有的…...
学习周报4/9
文章目录前言文献阅读摘要简介方法结论时间序列预测总结前言 本周阅读文献《Improving LSTM hydrological modeling with spatiotemporal deep learning and multi-task learning: A case study of three mountainous areas on the Tibetan Plateau》,文章主要基于…...
49天精通Java,第14天,Java泛型方法的定义和使用
目录一、基本介绍1、Java泛型的基本语法格式为:2、在使用泛型时,还需要注意以下几点:二、泛型的优点1、类型安全2、消除强制类型转换3、更高的效率4、潜在的性能收益三、常见泛型字母含义四、使用泛型时的注意事项五、泛型的使用1、泛型类2、…...
20230402英语学习
reasonable adj.合理的;通情达理的;明智的,理智的 abstract adj.抽象的,理论的 reflection n.反射; 映像, 倒影; 反映; 表达, 抒发; (长相等)酷似的人; 惟妙惟肖的事物; 深思; 考虑 instruction n.教授; 教导, 指导; 指示, 命令…...
Java知识复习(十七)SpringCloud
1、什么是微服务架构 微服务架构就是将单体的应用程序分成多个应用程序,这多个应用程序就成为微服务,每个微服务运行在自己的进程中,并使用轻量级的机制通信这些服务围绕业务能力来划分,并通过自动化部署机制来独立部署。这些服务…...
MySQL 数据库操作
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 一、关系模型二、数据库的操作 创建数据库查看数据库选择数据库删除数据库三、MySQL 数据库命名规范总结一、关系模型 关系数据库是建立在关系模型上的。而关系模…...
Cesium更换地球背景
设置背景图片 #cesiumContainer {width: 100%;height: 100%;background-image: url("/assets/image/背景.png"); }设置渲染, 用来去掉地球表面的大气效果的黑圈问题 this.viewer new Cesium.Viewer("cesiumContainer", {......// 设置渲染orderIndepe…...
测试人员的瓶颈期
测试人员的瓶颈期 做测试久了,会在所难免地碰到职业瓶颈期,这很正常,从事任何职业的工作人员都会遇到,关键是要看你如何去克服它。对优秀的软件测试人员来讲,除了要具备全面的技能、丰富的经验、良好的心理素质&#x…...
HTML5 <form> 标签
HTML5 <form> 标签 实例 带有两个输入字段和一个提交按钮的 HTML 表单: <form action"demo_form.php" method"get">First name: <input type"text" name"fname"><br>Last name: <input type&qu…...
编译技术-词法理论
一、文法的种类 1.1 分类定义 Chomsky 文法定义: G(V,Vt,P,Z)G (V, V_t, P, Z)G(V,Vt,P,Z)VVV:符号集合VtV_tVt:终结符号集合PPP :有穷规则集合ZZZ:是被符号,不能是终结符 关于不同文法的区别 类型…...
【20】核心易中期刊推荐——计算机科学电子通信(EI索引)
🚀🚀🚀NEW!!!核心易中期刊推荐栏目来啦 ~ 📚🍀 核心期刊在国内的应用范围非常广,核心期刊发表论文是国内很多作者晋升的硬性要求,并且在国内属于顶尖论文发表,具有很高的学术价值。在中文核心目录体系中,权威代表有CSSCI、CSCD和北大核心。其中,中文期刊的数…...
Vue 3.0 风格指南 2
#元素 attribute 的顺序推荐 元素 (包括组件) 的 attribute 应该有统一的顺序。 这是我们为组件选项推荐的默认顺序。它们被划分为几大类,所以你也能知道新添加的自定义 attribute 和指令应该放到哪里。 定义 (提供组件的选项) is列表渲染 (创建多个变化的相同元素…...
ChatGPT遭多国调查,OpenAI凌晨就安全问题发文,GPT-5要暂缓?
最近,意大利宣布禁用 ChatGPT,因为 OpenAI 违反了意大利相关的隐私规则和数据保护法,出现了用户数据丢失情况,而且未向用户告知。 消息出来后,德国、法国、爱尔兰、西班牙等国的监管部门都表示正在密切关注 ChatGPT 的…...
网络安全书籍推荐
网络安全书籍推荐 ,对于网络安全的初学者来说,能很好的选择教材,鉴于只有英文版,我尝试翻译成中文以供参考,初次翻译,翻译的不好请见谅。 标题注解技术等级The Art of Software Security Assessment软件安…...
【独家】华为OD机试 - 狼羊过河 or 羊、狼、农夫过河(C 语言解题)
最近更新的博客 华为od 2023 | 什么是华为od,od 薪资待遇,od机试题清单华为OD机试真题大全,用 Python 解华为机试题 | 机试宝典【华为OD机试】全流程解析+经验分享,题型分享,防作弊指南华为od机试,独家整理 已参加机试人员的实战技巧本篇题解:狼羊过河 or 羊、狼、农夫过河…...
东八区的 springboot 如何配置序列化
东八区的 springboot 🚞使用SpringBoot默认配置自定义配置类自定义 ObjectMapper自定义序列化器总结我接受它的苦,它的灰暗,它的刺,因为总会过去,我的花会开,生活也会慢慢拥抱我 使用SpringBoot默认配置 S…...
论文阅读_LLaMA
论文信息 number headings: auto, first-level 2, max 4, _.1.1 name_en: LLaMA: Open and Efficient Foundation Language Models name_ch: LLaMA: 开放高效的基础语言模型 paper_addr: https://arxiv.org/abs/2302.13971 doi: https://doi.org/10.48550/arXiv.2302.13971 da…...
腾讯空降测试工程师,绩效次次拿S,真是砂纸擦屁股,给我露了一手啊
上周我们公司的绩效面谈全部结束了,每年到这个时间点就是打绩效的时候了,对于职场打工人来说绩效绝对是最重要的事情之一,原因也很简单:奖金、晋升、涨薪都和它有关系。 比如下面这个美团员工在脉脉上的自曝就很凄凉࿱…...
手游刚开服就被攻击怎么办?如何防御DDoS?
开服初期是手游最脆弱的阶段,极易成为DDoS攻击的目标。一旦遭遇攻击,可能导致服务器瘫痪、玩家流失,甚至造成巨大经济损失。本文为开发者提供一套简洁有效的应急与防御方案,帮助快速应对并构建长期防护体系。 一、遭遇攻击的紧急应…...
在鸿蒙HarmonyOS 5中实现抖音风格的点赞功能
下面我将详细介绍如何使用HarmonyOS SDK在HarmonyOS 5中实现类似抖音的点赞功能,包括动画效果、数据同步和交互优化。 1. 基础点赞功能实现 1.1 创建数据模型 // VideoModel.ets export class VideoModel {id: string "";title: string ""…...
屋顶变身“发电站” ,中天合创屋面分布式光伏发电项目顺利并网!
5月28日,中天合创屋面分布式光伏发电项目顺利并网发电,该项目位于内蒙古自治区鄂尔多斯市乌审旗,项目利用中天合创聚乙烯、聚丙烯仓库屋面作为场地建设光伏电站,总装机容量为9.96MWp。 项目投运后,每年可节约标煤3670…...
学习STC51单片机31(芯片为STC89C52RCRC)OLED显示屏1
每日一言 生活的美好,总是藏在那些你咬牙坚持的日子里。 硬件:OLED 以后要用到OLED的时候找到这个文件 OLED的设备地址 SSD1306"SSD" 是品牌缩写,"1306" 是产品编号。 驱动 OLED 屏幕的 IIC 总线数据传输格式 示意图 …...
linux 下常用变更-8
1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行,YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID: YW3…...
leetcodeSQL解题:3564. 季节性销售分析
leetcodeSQL解题:3564. 季节性销售分析 题目: 表:sales ---------------------- | Column Name | Type | ---------------------- | sale_id | int | | product_id | int | | sale_date | date | | quantity | int | | price | decimal | -…...
SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
AI,如何重构理解、匹配与决策?
AI 时代,我们如何理解消费? 作者|王彬 封面|Unplash 人们通过信息理解世界。 曾几何时,PC 与移动互联网重塑了人们的购物路径:信息变得唾手可得,商品决策变得高度依赖内容。 但 AI 时代的来…...
LeetCode - 199. 二叉树的右视图
题目 199. 二叉树的右视图 - 力扣(LeetCode) 思路 右视图是指从树的右侧看,对于每一层,只能看到该层最右边的节点。实现思路是: 使用深度优先搜索(DFS)按照"根-右-左"的顺序遍历树记录每个节点的深度对于…...
