当前位置: 首页 > news >正文

蓝桥杯2023年第十四届省赛真题-买瓜--Java题解

目录

蓝桥杯2023年第十四届省赛真题-买瓜

题目描述

输入格式

输出格式

样例输入

样例输出

提示

【思路解析】

【代码实现】


蓝桥杯2023年第十四届省赛真题-买瓜

时间限制: 3s 内存限制: 320MB 提交: 796 解决: 69

题目描述

小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个瓜,每个瓜的重量为 Ai 。

小蓝刀功了得,他可以把任何瓜劈成完全等重的两份,不过每个瓜只能劈一刀。

小蓝希望买到的瓜的重量的和恰好为 m 。

请问小蓝至少要劈多少个瓜才能买到重量恰好为 m 的瓜。如果无论怎样小蓝都无法得到总重恰好为 m 的瓜,请输出 −1 。

输入格式

输入的第一行包含两个整数 n, m,用一个空格分隔,分别表示瓜的个数和小蓝想买到的瓜的总重量。

第二行包含 n 个整数 Ai,相邻整数之间使用一个空格分隔,分别表示每个瓜的重量。

输出格式

输出一行包含一个整数表示答案。

样例输入

复制

3 10
1 3 13

样例输出

复制

2

提示

对于 20% 的评测用例,∑n≤10;

对于 60% 的评测用例,∑n≤20;

对于所有评测用例,1 ≤n≤30,1≤ Ai ≤ 109 ,1 ≤ m ≤ 10^9

【思路解析】

这道题是一个很简单的递归可能性的罗列,但是每次递归有三个情况,则时间复杂度为O(3^N),时间复杂度过高,所以需要在递归过程中除掉那些完全不可能的解,使复杂度降低。

【代码实现】

package LQB;import java.util.Scanner;/*** @ProjectName: study3* @FileName: Ex4* @author:HWJ* @Data: 2023/9/17 21:54*/
public class Ex4 {static double[] subs; // subs[i]表示为西瓜i -西瓜n-1的西瓜质量和,用于对递归的降低可能性static double m;static int n;static int min = 40; // 因为n最大为30,所以最多劈瓜30次static double[] weights; // weights[i]表示为第i个西瓜的质量public static void main(String[] args) {Scanner input = new Scanner(System.in);n = input.nextInt();m = input.nextInt();weights = new double[n];subs = new double[n];for (int i = 0; i < n; i++) {weights[i] = input.nextInt();}subs[n - 1] = weights[n - 1];for (int i = n - 2; i >= 0; i--) {subs[i] = subs[i + 1] + weights[i];}int p = dfs(0, 0, 0);System.out.println(p == Integer.MAX_VALUE ? -1 : p);}// sum 表示现在搞定了多少西瓜   index 表示现在对第几个西瓜做决策   have表示现在已经劈了几次瓜了public static int dfs(double sum, int index, int have) {if (have >= min) { // 如果此时虽然满足要求但他大于了当前的最优情况,他不可能是最优解,直接排除掉return Integer.MAX_VALUE;}if (sum == m) { // 达到满足要求min = have; // 更新最小情况。return have;}if (sum > m) {return Integer.MAX_VALUE; // 此时不加任何西瓜 重量也已经超过了需要的重量,所以直接排除}if (index == n) {return Integer.MAX_VALUE; //此时已经使用了所有西瓜,也无法满足,直接排除掉}if (subs[index] + sum < m) {return Integer.MAX_VALUE; // 此时加上后面所有的西瓜也不满足条件,所以没有必要再递归了,}int p1 = dfs(sum + weights[index], index + 1, have);int p2 = dfs(sum + weights[index] / 2.0, index + 1, have + 1);int p3 = dfs(sum, index + 1, have);return Math.min(p1, Math.min(p2, p3));}}

相关文章:

蓝桥杯2023年第十四届省赛真题-买瓜--Java题解

目录 蓝桥杯2023年第十四届省赛真题-买瓜 题目描述 输入格式 输出格式 样例输入 样例输出 提示 【思路解析】 【代码实现】 蓝桥杯2023年第十四届省赛真题-买瓜 时间限制: 3s 内存限制: 320MB 提交: 796 解决: 69 题目描述 小蓝正在一个瓜摊上买瓜。瓜摊上共有 n 个…...

Chatbot到底提供了哪些便利?来看看“中文版Chatbase”

Chatbot的出现可以说是在极大的程度上改变了企业与客户互动的方式。Chatbot凭借其先进的功能和全天候可用性提供了一系列便捷的功能&#xff0c;为企业和客户提供便利和高效。随着自然语言处理和机器学习算法的进步&#xff0c;Chatbot已经发展到可以提供准确和个性化的响应&am…...

2023-09-18 LeetCode每日一题(打家劫舍 III)

2023-09-18每日一题 一、题目编号 337. 打家劫舍 III二、题目链接 点击跳转到题目位置 三、题目描述 小偷又发现了一个新的可行窃的地区。这个地区只有一个入口&#xff0c;我们称之为 root 。 除了 root 之外&#xff0c;每栋房子有且只有一个“父“房子与之相连。一番侦…...

Python一行代码实现文件共享【内网穿透公网访问】

文章目录 1.前言2.本地文件服务器搭建2.1.python的安装和设置2.2.cpolar的安装和注册 3.本地文件服务器的发布3.1.Cpolar云端设置3.2.Cpolar本地设置 4.公网访问测试5.结语 1.前言 数据共享作为和连接作为互联网的基础应用&#xff0c;不仅在商业和办公场景有广泛的应用&#…...

uni-app 之 下拉刷新,上拉加载,获取网络列表数据

uni-app 之 下拉刷新&#xff0c;上拉加载&#xff0c;获取网络列表数据 image.png <template><view><!-- 车源模块 -->--- uni.request 网络请求API接口 ---<view v-for"(item) in newsArr" :key"item.id" style"display: fle…...

笔记1.2 计算机网络结构

网络边缘 主机、网络应用 接入网络&#xff0c;物理介质 有线或无线通信链路 网络核心&#xff08;核心网络&#xff09;&#xff1a; 互联的路由器&#xff08;或分组转发设备&#xff09; 网络之网络 一、网络边缘 主机&#xff08;端系统&#xff09;&#xff1a; 位…...

使用Ansible Template模块进行配置文件管理

Ansible是一种功能强大的自动化工具&#xff0c;它提供了各种模块来简化配置管理任务。其中&#xff0c;Template模块是一种特别有用的模块&#xff0c;它结合了Jinja2模板引擎的功能&#xff0c;使得在配置文件中进行动态内容渲染变得非常方便。本文将介绍Ansible的Template模…...

Secrets of RLHF in Large Language Models Part I: PPO

本文是LLM系列文章&#xff0c;针对《Secrets of RLHF in Large Language Models Part I: PPO》的翻译。 大型语言模型中RLHF的秘密&#xff08;上&#xff09;&#xff1a;PPO 摘要1 引言2 相关工作3 人类反馈的强化学习4 有益和无害的奖励模型5 PPO的探索6 评估和讨论局限性…...

Java手写AVL树应用拓展案例

Java手写AVL树应用拓展案例 手写 AVL 树是一项有挑战性的任务&#xff0c;它是一种自平衡二叉搜索树&#xff0c;通过在每个节点上维护一个平衡因子&#xff08;balance factor&#xff09;来实现平衡。在实际应用中&#xff0c;AVL 树可以用于实现高效的查找、插入和删除操作…...

vue3+ts+uniapp小程序封装获取授权hook函数

vue3tsuniapp小程序封装获取授权hook函数 小程序授权的时候&#xff0c;如果点击拒绝授权&#xff0c;然后就再也不会出现授权了&#xff0c;除非用户手动去右上角…设置打开 通过uni官方api自己封装一个全局的提示: uni.getSetting :http://uniapp.dcloud.io/api/other/settin…...

绘图(一)弹球小游戏

AWT编程 语雀 仓库&#xff1a;Java图形化界面: Java图形化界面学习demo与资料 (gitee.com) 很多程序如各种小游戏都需要在窗口中绘制各种图形&#xff0c;除此之外&#xff0c;即使在开发JavaEE项目时&#xff0c; 有 时候也必须"动态"地向客户 端生成各种图形、…...

uniapp滑动事件

在Uniapp中&#xff0c;可以通过touchstart、touchmove和touchend等事件来监听滑动操作。以下是对这些事件的简要说明&#xff1a; touchstart&#xff1a;当手指触摸屏幕时触发该事件。可以通过event.touches属性获取到触摸点的信息。 touchmove&#xff1a;当手指在屏幕上滑…...

入门人工智能 —— 学习 python 使用 IDE :vscode 完成编程 (2)

入门人工智能 —— 学习 python 使用 IDE &#xff1a;vscode 完成编程 &#xff08;2&#xff09; 安装和配置 VSCode创建和运行 Python 代码使用 VSCode 的调试功能 在上一篇文章中&#xff0c;介绍了如何入门人工智能编程&#xff0c;并开始了学习 Python 编程语言的基础知识…...

MyBatis字段名和属性名不一样的解决方案

一、给字段起别名&#xff0c;保持和属性名一样 <! --List<Emp> getAllEmp( ); --><select id"getAllEmp" resultType"Emp">select eid , emp_name empName , age , sex, email from t_emp</ select>如上面的SQL语句将emp_name取别…...

Postman应用——Collection、Folder和Request

文章目录 Collection新建CollectionCollection重命名保存Request到Collection在Collection下创建Request删除Collection Folder新建FolderFolder重命名保存Request到Folder在Folder下创建Request在Folder下创建Folder删除Folder Request创建临时RequestRequest重命名删除Reques…...

驱动开发,stm32mp157a开发板的led灯控制实验

1.实验目的 编写LED灯的驱动&#xff0c;在应用程序中编写控制LED灯亮灭的代码逻辑实现LED灯功能的控制&#xff1b; 2.LED灯相关寄存器分析 LED1->PE10 LED1亮灭&#xff1a; RCC寄存器[4]->1 0X50000A28 GPIOE_MODER[21:20]->01 (输出) 0X50006000 GPIOE_ODR[10]-&g…...

黑客入侵机构,导致2万条信息被卖

近日据厦门日报报道&#xff0c;厦门一教育培训机构遭黑客入侵&#xff0c;2万条职工、学员信息被出售&#xff0c;教培机构被罚。 今年2月底&#xff0c;多名在厦门某教育培训机构学习的学员接到自称是该机构工作人员的电话&#xff0c;对方能准确说出学员的学科信息、缴费情…...

循环购:让消费者和商家共赢的新型电商模式

对于消费者来说&#xff0c;循环购可以让他们享受到优惠价格和高品质商品的同时&#xff0c;还能获得额外的收益和奖励。循环购可以激发消费者的积极性和忠诚度&#xff0c;增加他们对平台的信任和满意度。 对于商家来说&#xff0c;循环购可以让他们节省大量的营销成本和人力…...

分布式缓冲-Redis

个人名片&#xff1a; 博主&#xff1a;酒徒ᝰ. 个人简介&#xff1a;沉醉在酒中&#xff0c;借着一股酒劲&#xff0c;去拼搏一个未来。 本篇励志&#xff1a;三人行&#xff0c;必有我师焉。 本项目基于B站黑马程序员Java《SpringCloud微服务技术栈》&#xff0c;SpringCloud…...

C# 流Stream详解(3)——FileStream源码

【FileStream】 构造函数 如果创建一个FileStream&#xff0c;常见的参数例如路径Path、操作方式FileMode、权限FileAccess。 这里说下FileShare和SafeFileHandle。 我们知道在读取文件时&#xff0c;通常会有两个诉求&#xff1a;一是如何更快的读取文件内容&#xff1b;二…...

跨端三维GIS实战:uni-app集成Cesium.js的RenderJS方案解析

1. 为什么需要跨端三维GIS解决方案 最近几年三维GIS应用越来越普及&#xff0c;从传统的Web端到移动端APP&#xff0c;开发者都希望实现"一次开发&#xff0c;多端运行"的目标。uni-app作为跨端开发框架&#xff0c;天然具备这个优势。但当我们想在uni-app中集成Cesi…...

MCP协议专用Linter:mcp-lint工具的设计、规则与集成实践

1. 项目概述&#xff1a;一个为MCP协议量身定制的代码质量守护者 最近在折腾MCP&#xff08;Model Context Protocol&#xff09;相关的开发&#xff0c;发现一个挺有意思的项目&#xff1a; robert19001-cmyk/mcp-lint 。光看名字&#xff0c;你大概能猜到它是个代码检查工具…...

液态硅胶注塑加工供应商推荐

随着液态硅胶&#xff08;LSR&#xff09;在医疗、母婴、电子、汽车等多个领域的广泛应用&#xff0c;选择一个可靠的液态硅胶注塑加工供应商变得至关重要。作为天沅智能制造科技有限公司&#xff08;简称TYM&#xff09;&#xff0c;我们不仅深耕于液态硅胶注射成型机械的设计…...

用Yii2快速构建微服务RESTful API全攻略

...

Codex客户端Mac低版本安装解决方法

Codex客户端Mac低版本安装解决方法 关键词&#xff1a;Codex客户端安装、Mac系统版本过低、无法安装Codex、Mac兼容性问题解决、Codex客户端下载、Mac软件安装失败 在实际开发环境里&#xff0c;很多工具对 macOS 版本都有最低要求限制。最近在本地尝试安装 Codex 客户端时&am…...

在51单片机上用C语言实现扫地机器人状态机:一个双层HSM的实战案例

在51单片机上用C语言实现扫地机器人状态机&#xff1a;一个双层HSM的实战案例 想象一下&#xff0c;你的扫地机器人正在客厅里优雅地转着圈&#xff0c;突然撞到了茶几腿。它没有惊慌失措&#xff0c;而是从容地后退、转向&#xff0c;继续它的清洁工作。这种看似简单的行为背…...

别再只调参了!搞懂MaxPool2D的padding=‘same‘和‘valid‘,让你的CNN模型效果立竿见影

别再只调参了&#xff01;搞懂MaxPool2D的paddingsame和valid&#xff0c;让你的CNN模型效果立竿见影 在构建卷积神经网络&#xff08;CNN&#xff09;时&#xff0c;许多开发者习惯性地将注意力集中在卷积核大小、激活函数选择等显性参数上&#xff0c;却常常忽略池化层中padd…...

别再傻傻分不清了!VB、VBS、VBA到底该用哪个?从Excel自动化到网页脚本的实战选择指南

VB、VBS与VBA实战指南&#xff1a;从Excel自动化到系统脚本的精准选择 每次打开Excel准备处理数据时&#xff0c;你是否纠结过该用VBA还是VBS&#xff1f;当需要批量重命名文件时&#xff0c;是否犹豫过VB和VBS哪个更高效&#xff1f;这三种看似相似的"VB系"语言&am…...

ROS机器人开发:用tf_monitor和tf_echo快速诊断你的坐标转换问题(附真实案例)

ROS机器人坐标转换问题诊断实战&#xff1a;从工具使用到思维升级 当机器人的激光雷达数据与地图匹配出现偏移&#xff0c;或者机械臂末端执行器总是偏离目标位置几厘米时&#xff0c;有经验的开发者会第一时间检查坐标转换系统。ROS中的tf库虽然强大&#xff0c;但一旦出现问题…...

BIGEMAP自定义在线地图源:从零到一构建专属底图库

1. 为什么需要自定义地图源&#xff1f; 在日常工作中&#xff0c;我们经常会遇到这样的场景&#xff1a;项目需要特殊的地图底图&#xff0c;但软件内置的地图源无法满足需求&#xff1b;或者需要叠加多个地图源进行对比分析&#xff1b;又或者某些专业领域需要特定的地图数据…...