爱吃蟠桃的孙悟空

文章目录

  • 1. 题目描述
  • 2. 实现
  • 3. 整体思路
  • 4. 函数定义及参数解释
  • 5.二分查找过程
  • 6.主函数部分

1. 题目描述

在这里插入图片描述

2. 实现

#include <iostream>
#include <vector>
#include <algorithm>using namespace std;int findMinEatingSpeed(vector<int>& piles, int h) {int left = 1;int right = *max_element(piles.begin(), piles.end());int ans = right;while (left <= right) {int mid = left + (right - left) / 2;int hours = 0;for (int pile : piles) {hours += pile / mid + (pile % mid != 0);}if (hours <= h) {ans = mid;right = mid - 1;}else {left = mid + 1;}}return ans;
}int main() {int n;cout << "输入桃树的数量:";cin >> n;if (n <= 0 || n >= 10000) {cout << "0" << endl;return 0;}vector<int> piles(n);cout << "输入每棵桃树上蟠桃的数量:";for (int i = 0; i < n; i++) {cin >> piles[i];if (piles[i] <= 0) {cout << "0" << endl;return 0;}}int h;cout << "输入守卫离开的时间:";cin >> h;if (h <= 0 || h >= 10000) {cout << "0" << endl;return 0;}int result = findMinEatingSpeed(piles, h);cout << result << endl;return 0;
}

3. 整体思路

这段代码的目的是找到孙悟空在给定时间内吃完所有蟠桃的最小吃桃速度。它采用二分查找的方法来高效地确定这个最小速度。

4. 函数定义及参数解释

int findMinEatingSpeed(vector& piles, int h):

这个函数接受两个参数,一个是存储每棵桃树上蟠桃数量的整数向量piles,另一个是守卫离开的时间 h。
函数的返回值是一个整数,表示能够在h小时内吃完所有蟠桃的最小吃桃速度。

5.二分查找过程

  • 初始化速度范围:
    int left = 1:最小速度初始化为 1,因为速度不能为 0。
    int right = *max_element(piles.begin(), piles.end()):最大速度初始化为所有桃树上蟠桃数量的最大值。这是因为如果速度大于这个值,肯定能在更短的时间内吃完所有蟠桃,但我们要找的是最小速度,所以从最大值开始逐步减小。
  • 循环进行二分查找:
    while (left <= right):只要速度范围的左边界小于等于右边界,就继续进行二分查找。
    int mid = left + (right - left) / 2:计算当前速度范围的中间值,作为尝试的吃桃速度。
  • 计算以当前速度吃桃所需的时间:
    int hours = 0:用于累计以当前速度吃桃所需的总时间。
    for (int pile : piles):遍历每棵桃树。
    hours += pile / mid + (pile % mid!= 0):计算吃完当前这棵树上的蟠桃所需的时间。如果桃树上的蟠桃数量能被当前速度整除,那么所需时间就是蟠桃数量除以速度;如果不能整除,还需要额外一小时来吃完剩下的蟠桃。
  • 根据所需时间调整速度范围:
    如果以当前速度吃完所有蟠桃所需的时间小于等于守卫离开的时间h,说明当前速度可能是最小速度之一,或者还可以更小。所以更新答案为当前速度ans = mid,并将右边界调整为mid - 1,继续在更小的速度范围内查找。
    如果所需时间大于h,说明当前速度太慢,无法在规定时间内吃完所有蟠桃,将左边界调整为mid + 1,在更大的速度范围内查找。
  • 返回结果:
    最终,函数返回ans,即能够在h小时内吃完所有蟠桃的最小吃桃速度。

6.主函数部分

  • 输入处理:
    首先从用户输入获取桃树的数量n,如果n不满足条件(0 < n < 10000),则输出 0 并返回。
    接着创建一个大小为n的整数向量piles,用于存储每棵桃树上蟠桃的数量。从用户输入读取每棵桃树上的蟠桃数量,并检查是否满足条件(数量大于 0),如果不满足则输出 0 并返回。
    再从用户输入获取守卫离开的时间h,如果h不满足条件(0 < h < 10000),则输出 0 并返回。
  • 调用函数并输出结果:
    调用findMinEatingSpeed函数,并将结果输出到控制台。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/444509.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

selenium:Select类操作复选框和下拉框(7)

复选框/下拉框操作的Select类 主要使用selinium中的类Select来模拟选择网页上的下拉框或者复选框中的内容&#xff0c;使用前先导入 from selenium.webdriver.support.ui import Select 主要方法如下&#xff1a; 函数 功能 select_by_value 根据复选框/下拉框的值选择 se…

【含开题报告+文档+PPT+源码】基于springBoot+vue超市仓库管理系统的设计与实现

开题报告 随着电子商务的快速发展和物流行业的日益壮大&#xff0c;超市仓库管理系统的重要性也日益凸显。传统的超市仓库管理方式存在许多问题&#xff0c;比如人工操作繁琐、数据统计不准确、管理效率低下等。因此&#xff0c;需要设计和实现一个高效、智能的超市仓库管理系…

mig IP核的学习

mig全称是Memory Interface Generator。 参考自视频&#xff1a;MIG IP配置_哔哩哔哩_bilibili DDR基础知识 时钟类型 使用流程 选择DDR3 16是数据线的位宽&#xff0c;能在信号中看出来 这里的clock period 不太明白清楚 文章中怎么选择clock period 靠的是 芯片型号中的…

在培训考试小程序页面弹出半屏的弹窗交互实践

如果在页面内进行复杂的界面设计&#xff08;如在页面内弹出半屏的弹窗、在页面内加载一个全屏的子页面等&#xff09;&#xff0c;用户进行返回操作会直接离开当前页面&#xff0c;不符合用户预期&#xff0c;预期应为关闭当前弹出的组件。 为此提供“假页”容器组件page-con…

JSON 格式化工具:快速便捷地格式化和查看 JSON 数据

JSON 格式化工具&#xff1a;快速便捷地格式化和查看 JSON 数据 为什么需要 JSON 格式化工具&#xff1f; 在日常开发和调试中&#xff0c;JSON 是非常常见的数据交换格式。无论是前端与后端的接口调用&#xff0c;还是数据存储和处理&#xff0c;JSON 格式都扮演着重要角色。…

Windows 安装 MySQL

1. 下载MySQL安装包 访问&#xff1a;MySQL :: Download MySQL Installer选择适合的版本。推荐下载 MySQL Installer for Windows&#xff0c;该安装包包含所有必要的组件选择 Windows (x86, 32-bit), MSI Installer 或 Windows (x86, 64-bit), MSI Installer 2. 运行安装程序…

洛谷P5723、P5728、P1428、P1319 Python解析

P5723 完整代码 def is_prime(y):if y < 2:return Falsefor i in range(2, int(y**0.5) 1):if y % i 0:return Falsereturn Truen int(input()) sum_primes 0 x 0if n < 2:print("0") elif n 2:print("2\n1") else:for i in range(2, n 1):i…

coredump设置

coredump路径查看及设置 coredump路径查看 命令1&#xff1a; cat /proc/sys/kernel/core_pattern 命令2&#xff1a; /sbin/sysctl kernel.core_pattern coredump路径修改 临时修改&#xff1a;echo ‘/var/log/%e.core.%p’ > /proc/sys/kernel/core_pattern 永久修改…

Python网络爬虫从入门到实战

目录 引言 一、网络爬虫的概念 二、 网络爬虫的基本工作流程 &#xff08;一&#xff09;过程&#xff1a; &#xff08;二&#xff09;安装requests模块和beautifulsoup4模块 &#xff08;三&#xff09;requests库的使用 1、requests库的基本介绍 2、导入requests库的…

深度学习:基于MindSpore实现ResNet50中药分拣

ResNet基本介绍 ResNet&#xff08;Residual Network&#xff09;是一种深度神经网络架构&#xff0c;由微软研究院的Kaiming He等人在2015年提出&#xff0c;并且在ILSVRC 2015竞赛中取得了很好的成绩。ResNet主要解决了随着网络深度增加而出现的退化问题&#xff0c;即当网络…

Chromium 中chrome.history扩展接口c++实现

一、前端 chrome.history定义 使用 chrome.history API 与浏览器的已访问网页的记录进行交互。您可以在浏览器的历史记录中添加、移除和查询网址。如需使用您自己的版本替换历史记录页面&#xff0c;请参阅覆盖网页。 更多参考&#xff1a;chrome.history | API | Chrome…

E. Expected Power (Codeforces 976 Div2)

这道题好难 原题 E. Expected Power 提示 Hint 1 试着找 f(S) 的期望值而不是 Hint 2 从f(S)的二进制表示中找规律来求 代码1 对答案代码做了注释 #include <bits/stdc.h> using namespace std;const int mod 1e97, N 2e5 10;// 最高只有1023, 小于等于2的10…

【论文阅读】Cross Attention Network for Few-shot Classification

用于小样本分类的交叉注意力网络 引用&#xff1a;Hou, Ruibing, et al. “Cross attention network for few-shot classification.” Advances in neural information processing systems 32 (2019). 论文地址&#xff1a;下载地址 论文代码&#xff1a;https://github.com/bl…

最新eclipse安装教程及安装包获取-附JDK安装

Eclipse简介 Eclipse 是一款开源的、功能强大、广泛应用的集成开发环境&#xff08;IDE&#xff09;&#xff0c;在软件开发领域占据着重要地位。 一、起源与发展 Eclipse 最初由 IBM 开发&#xff0c;2001 年以开源软件的形式发布。此后&#xff0c;它迅速吸引了全球众多开…

基于Python的在线音乐平台

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…

发送邮件和随机码的生成

类视图和方法视图区别&#xff1a; 不需要装饰器&#xff0c;只需要继承MethodView,需要使用什么方式就写对应的方法名称&#xff0c;它就能自动匹配 app.route("/delete/",methods["DELETE"])这些就不用写了 但是不写装饰器并不意味着不写路由了&#xff…

毕设分享 大数据用户画像分析系统(源码分享)

文章目录 0 前言2 用户画像分析概述2.1 用户画像构建的相关技术2.2 标签体系2.3 标签优先级 3 实站 - 百货商场用户画像描述与价值分析3.1 数据格式3.2 数据预处理3.3 会员年龄构成3.4 订单占比 消费画像3.5 季度偏好画像3.6 会员用户画像与特征3.6.1 构建会员用户业务特征标签…

Python入门笔记(四)

文章目录 第九章 集合set9.1 创建集合&#xff1a;set()、集合生成式9.2 集合性质9.3 一些函数&#xff1a;issubset()、issuperset()、isdisjoint()9.4 集合增加元素&#xff1a;add()、update()9.5 集合删除元素&#xff1a;remove()、discard()、pop()、clear()9.6 创建不能…

[论文笔记]SGPT: GPT Sentence Embeddings for Semantic Search

引言 解码器Transformer的规模不断壮大&#xff0c;轻松达到千亿级参数。同时由于该规模&#xff0c;基于提示或微调在各种NLP任务上达到SOTA结果。但目前为止解码器Transformer还无法应用在语义搜索或语句嵌入上。 为了简单&#xff0c;下文中以翻译的口吻记录&#xff0c;比…

企业如何制定适合自己的专利布局策略

在竞争激烈的市场环境中&#xff0c;专利布局对于企业的发展和竞争优势的建立至关重要。以下将分要点解析企业如何制定适合自己的专利布局策略。 1、明确企业的发展战略和市场定位 企业首先需要深入了解自身的长期发展规划和短期业务目标。明确是要通过技术创新来开拓新市场&am…