458. 可怜的小猪

458. 可怜的小猪

有 buckets 桶液体,其中 正好 有一桶含有毒药,其余装的都是水。它们从外观看起来都一样。为了弄清楚哪只水桶含有毒药,你可以喂一些猪喝,通过观察猪是否会死进行判断。不幸的是,你只有 minutesToTest 分钟时间来确定哪桶液体是有毒的。

喂猪的规则如下:

  1. 选择若干活猪进行喂养
  2. 可以允许小猪同时饮用任意数量的桶中的水,并且该过程不需要时间。
  3. 小猪喝完水后,必须有 minutesToDie 分钟的冷却时间。在这段时间里,你只能观察,而不允许继续喂猪。
  4. 过了 minutesToDie 分钟后,所有喝到毒药的猪都会死去,其他所有猪都会活下来。
  5. 重复这一过程,直到时间用完。
    给你桶的数目 buckets ,minutesToDie 和 minutesToTest ,返回在规定时间内判断哪个桶有毒所需的 最小 猪数。

示例 1:输入:buckets = 1000, minutesToDie = 15, minutesToTest = 60
输出:5示例 2:输入:buckets = 4, minutesToDie = 15, minutesToTest = 15
输出:2示例 3:输入:buckets = 4, minutesToDie = 15, minutesToTest = 30
输出:2

提示:

  • 1 <= buckets <= 1000
  • 1 <= minutesToDie <= minutesToTest <= 100

解题思路

  • 老鼠试毒药的变种题目
    1024瓶毒药,10只老鼠,试出一瓶有毒的毒药,方案:给每瓶药从0-1023进行编号,老鼠从0-9进行编号,对于每一瓶药,根据其编号二进制表示中1出现的位置,给对应位置的小白鼠喂药,根据小白鼠的死亡结果,可以反推出毒药的二进制表示。

共通点:小白鼠只有两种状态0代表存活,1代表死亡,而本题中可以进行minutesToTest / minutesToDie轮,假如minutesToTest / minutesToDie=2的话,那么可以进行两轮,存在3种状态

  1. 第一轮死亡
  2. 第二轮死亡
  3. 第二轮还存活

老鼠试药的计算公式为 210=10242^{10}=1024210=1024

  • 1024 为毒药数量
  • 2为老鼠可能的状态数量
  • 10 代表老鼠个数

因此这题 计算公式为statesres=bucketsstates^{res}=bucketsstatesres=buckets

  • buckets 为毒药数量
  • states为小猪可能的状态数量,公式为minutesToTest / minutesToDie + 1;
  • res为需要的小猪数量,也是我们需要计算的最终结果

代码

class Solution {
public:int poorPigs(int buckets, int minutesToDie, int minutesToTest) {int states = minutesToTest / minutesToDie + 1;return ceil(log(buckets)/log(states));}
};

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

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

相关文章

熊猫数据集_大熊猫数据框的5个基本操作

熊猫数据集Tips and Tricks for Data Science数据科学技巧与窍门 Pandas is a powerful and easy-to-use software library written in the Python programming language, and is used for data manipulation and analysis.Pandas是使用Python编程语言编写的功能强大且易于使用…

图嵌入综述 (arxiv 1709.07604) 译文五、六、七

应用 图嵌入有益于各种图分析应用&#xff0c;因为向量表示可以在时间和空间上高效处理。 在本节中&#xff0c;我们将图嵌入的应用分类为节点相关&#xff0c;边相关和图相关。 节点相关应用 节点分类 节点分类是基于从标记节点习得的规则&#xff0c;为图中的每个节点分配类标…

聊聊自动化测试框架

无论是在自动化测试实践&#xff0c;还是日常交流中&#xff0c;经常听到一个词&#xff1a;框架。之前学习自动化测试的过程中&#xff0c;一直对“框架”这个词知其然不知其所以然。 最近看了很多自动化相关的资料&#xff0c;加上自己的一些实践&#xff0c;算是对“框架”有…

1971. Find if Path Exists in Graph

1971. Find if Path Exists in Graph 有一个具有 n个顶点的 双向 图&#xff0c;其中每个顶点标记从 0 到 n - 1&#xff08;包含 0 和 n - 1&#xff09;。图中的边用一个二维整数数组 edges 表示&#xff0c;其中 edges[i] [ui, vi] 表示顶点 ui 和顶点 vi 之间的双向边。 …

移动磁盘文件或目录损坏且无法读取资料如何找回

文件或目录损坏且无法读取说明这个盘的文件系统结构损坏了。在平时如果数据不重要&#xff0c;那么可以直接格式化就能用了。但是有的时候里面的数据很重要&#xff0c;那么就必须先恢复出数据再格式化。具体恢复方法可以看正文了解&#xff08;不格式化的恢复方法&#xff09;…

python 平滑时间序列_时间序列平滑以实现更好的聚类

python 平滑时间序列In time series analysis, the presence of dirty and messy data can alter our reasonings and conclusions. This is true, especially in this domain, because the temporal dependency plays a crucial role when dealing with temporal sequences.在…

基于SmartQQ协议的QQ自动回复机器人-1

0. 本项目的原始代码及我二次开发后的代码 1. 软件安装:【myeclipse6.0 maven2】 0. https://blog.csdn.net/zgmzyr/article/details/6886440 1. https://blog.csdn.net/shuzhe66/article/details/45009175 2. https://www.cnblogs.com/whgk/p/7112560.html<mirror><…

1725. 可以形成最大正方形的矩形数目

1725. 可以形成最大正方形的矩形数目 给你一个数组 rectangles &#xff0c;其中 rectangles[i] [li, wi] 表示第 i 个矩形的长度为 li 、宽度为 wi 。 如果存在 k 同时满足 k < li 和 k < wi &#xff0c;就可以将第 i 个矩形切成边长为 k 的正方形。例如&#xff0c…

帮助学生改善学习方法_学生应该如何花费时间改善自己的幸福

帮助学生改善学习方法There have been numerous studies looking into the relationship between sleep, exercise, leisure, studying and happiness. The results were often quite like how we expected, though there have been debates about the relationship between sl…

Spring Boot 静态资源访问原理解析

一、前言 springboot配置静态资源方式是多种多样&#xff0c;接下来我会介绍其中几种方式&#xff0c;并解析一下其中的原理。 二、使用properties属性进行配置 应该说 spring.mvc.static-path-pattern 和 spring.resources.static-locations这两属性是成对使用的&#xff0c;如…

深挖“窄带高清”的实现原理

过去几年&#xff0c;又拍云一直在点播、直播等视频应用方面潜心钻研&#xff0c;取得了不俗的成果。我们结合点播、直播、短视频等业务中的用户场景&#xff0c;推出了“省带宽、压成本”系列文章&#xff0c;从编码技术、网络架构等角度出发&#xff0c;结合又拍云的产品成果…

学习总结5 - bootstrap学习记录1__安装

1.bootstrap是什么&#xff1f; 简洁、直观、强悍的前端开发框架&#xff0c;说白了就是给后端二把刀开发网页用的&#xff0c;让web开发更迅速、简单。 复制代码 2.如何使用&#xff1f; 如图所示到bootstrap中文网进行下载 复制代码 下载完成之后&#xff0c;如图所示&#x…

519. 随机翻转矩阵

519. 随机翻转矩阵 给你一个 m x n 的二元矩阵 matrix &#xff0c;且所有值被初始化为 0 。请你设计一个算法&#xff0c;随机选取一个满足 matrix[i][j] 0 的下标 (i, j) &#xff0c;并将它的值变为 1 。所有满足 matrix[i][j] 0 的下标 (i, j) 被选取的概率应当均等。 …

模型的搜索和优化方法综述:

一、常用的优化方法&#xff1a; 1.爬山 2.最陡峭下降 3.期望最大值 二、常用的搜索方法&#xff1a; 1.贪婪搜索 2.分支界定 3.宽度&#xff08;深度&#xff09;优先遍历转载于:https://www.cnblogs.com/xyp666/p/9042143.html

Redis 服务安装

下载 客户端可视化工具: RedisDesktopManager redis官网下载: http://redis.io/download windos服务安装 windows服务安装/卸载下载文件并解压使用 管理员身份 运行命令行并且切换到解压目录执行 redis-service --service-install windowsR 打开运行窗口, 输入 services.msc 查…

熊猫数据集_对熊猫数据框使用逻辑比较

熊猫数据集P (tPYTHON) Logical comparisons are used everywhere.逻辑比较随处可见 。 The Pandas library gives you a lot of different ways that you can compare a DataFrame or Series to other Pandas objects, lists, scalar values, and more. The traditional comp…

初级功能笔试题-1

给我徒弟整理的一些理论性的笔试题&#xff0c;不喜勿喷。&#xff08;所以没有答案哈&#xff09; 1、测试人员返测缺陷时&#xff0c;如果缺陷未修复&#xff0c;把缺陷的状态置为下列什么状态&#xff08;&#xff09;。 2、当验证被测系统的主要业务流程和功能是否实现时&a…

ansbile--playbook剧本案例

个人博客转至&#xff1a; www.zhangshoufu.com 通过ansible批量管理三台服务器&#xff0c;使三台服务器实现备份&#xff0c;web01、nfs、backup&#xff0c;把web和nfs上的重要文件被分到backup上&#xff0c;主机ip地址分配如下 CharacterIP地址IP地址主机名Rsync--server1…

5938. 找出数组排序后的目标下标

5938. 找出数组排序后的目标下标 给你一个下标从 0 开始的整数数组 nums 以及一个目标元素 target 。 目标下标 是一个满足 nums[i] target 的下标 i 。 将 nums 按 非递减 顺序排序后&#xff0c;返回由 nums 中目标下标组成的列表。如果不存在目标下标&#xff0c;返回一…

决策树之前要不要处理缺失值_不要使用这样的决策树

决策树之前要不要处理缺失值As one of the most popular classic machine learning algorithm, the Decision Tree is much more intuitive than the others for its explainability. In one of my previous article, I have introduced the basic idea and mechanism of a Dec…