LeetCode 1753. 移除石子的最大得分(优先队列)

文章目录

    • 1. 题目
    • 2. 解题
      • 2.1 优先队列
      • 2.2 脑筋急转弯

1. 题目

你正在玩一个单人游戏,面前放置着大小分别为 a​​​​​​、b 和 c​​​​​​ 的 三堆 石子。

每回合你都要从两个 不同的非空堆 中取出一颗石子,并在得分上加 1 分。
当存在 两个或更多空堆时,游戏停止。

给你三个整数 a 、b 和 c ,返回可以得到的 最大分数

示例 1:
输入:a = 2, b = 4, c = 6
输出:6
解释:石子起始状态是 (2, 4, 6) ,最优的一组操作是:
- 从第一和第三堆取,石子状态现在是 (1, 4, 5)
- 从第一和第三堆取,石子状态现在是 (0, 4, 4)
- 从第二和第三堆取,石子状态现在是 (0, 3, 3)
- 从第二和第三堆取,石子状态现在是 (0, 2, 2)
- 从第二和第三堆取,石子状态现在是 (0, 1, 1)
- 从第二和第三堆取,石子状态现在是 (0, 0, 0)
总分:6 分 。示例 2:
输入:a = 4, b = 4, c = 6
输出:7
解释:石子起始状态是 (4, 4, 6) ,最优的一组操作是:
- 从第一和第二堆取,石子状态现在是 (3, 3, 6)
- 从第一和第三堆取,石子状态现在是 (2, 3, 5)
- 从第一和第三堆取,石子状态现在是 (1, 3, 4)
- 从第一和第三堆取,石子状态现在是 (0, 3, 3)
- 从第二和第三堆取,石子状态现在是 (0, 2, 2)
- 从第二和第三堆取,石子状态现在是 (0, 1, 1)
- 从第二和第三堆取,石子状态现在是 (0, 0, 0)
总分:7 分 。示例 3:
输入:a = 1, b = 8, c = 8
输出:8
解释:最优的一组操作是连续从第二和第三堆取 8 回合,直到将它们取空。
注意,由于第二和第三堆已经空了,游戏结束,不能继续从第一堆中取石子。提示:
1 <= a, b, c <= 10^5

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/maximum-score-from-removing-stones
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。

2. 解题

2.1 优先队列

  • 优先拿最多的两堆
class Solution {
public:int maximumScore(int a, int b, int c) {priority_queue<int> q; //大的优先q.push(a), q.push(b), q.push(c);int delta, ans = 0;while(1){a = q.top(), q.pop();b = q.top(), q.pop();if(b == 0)break;c = q.top();delta = max(1, b-c);ans += delta;a -= delta;b -= delta;q.push(a);q.push(b);}return ans;}
};

140 ms 5.9 MB C++

2.2 脑筋急转弯

  • 最大的个数 >= 其余两堆之和,只能把小的两堆拿完
  • 否则,只能剩下 0 个 或者 1个石子
class Solution {
public:int maximumScore(int a, int b, int c) {vector<int> arr = {a, b, c};sort(arr.begin(), arr.end());if(arr[0]+arr[1] <= arr[2])return arr[0]+arr[1];return (arr[0]+arr[1]+arr[2])/2;}
};

0 ms 5.9 MB C++


我的CSDN博客地址 https://michael.blog.csdn.net/

长按或扫码关注我的公众号(Michael阿明),一起加油、一起学习进步!
Michael阿明

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

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

相关文章

基于Spring框架的Shiro配置

http://kdboy.iteye.com/blog/1103794 一、在web.xml中添加shiro过滤器 Xml代码 <!-- Shiro filter--> <filter> <filter-name>shiroFilter</filter-name> <filter-class> org.springframework.web.filter.Delegating…

dat文本导入mysql_mysql学习笔记(九) 增删改查的优化

一、大批量插入数据当使用load命令导入数据的时候&#xff0c;可以适当的提高导入的速度。对于myisam存储引擎的表可以通过下述方法快速的导入大量的数据。Alter table tablename disable keys;Loading dateAlter table tabename enable keys;其中disable keys和enable keys用来…

asp.net接受表单验证格式后再提交数据_如何解析 el-form-renderer 表单渲染器1.14.0...

DEEPEXI 大前端常人道&#xff0c;一入开发深似海&#xff0c;技术学习无止境。在新技术层出不穷的前端开发领域&#xff0c;有一群身怀绝技的开发&#xff0c;他们在钻研前沿技术的同时&#xff0c;也不忘分享他们的成果&#xff0c;回馈社区。下面&#xff0c;就由小水滴带大…

债券收益率预测模型_利率预测模型系列之二:利率预测模型带来的启示

利率预测模型带来的启示在《利率预测模型系列之一&#xff1a;简单的N-S 模型运用》中&#xff0c;我们对收益率曲线预测模型进行了简单介绍&#xff0c;该模型能够给我们提供较好的利率及收益率曲线预测效果。当然&#xff0c;在理论上&#xff0c;还有更多更复杂的利率预测模…

LeetCode 1751. 最多可以参加的会议数目 II(DP + 二分查找)

文章目录1. 题目2. 解题1. 题目 给你一个 events 数组&#xff0c;其中 events[i] [startDayi, endDayi, valuei] &#xff0c;表示第 i 个会议在 startDayi 天开始&#xff0c;第 endDayi 天结束&#xff0c;如果你参加这个会议&#xff0c;你能得到价值 valuei 。 同时给你…

SemEval-2010任务8:成对名词之间的语义关系的多分类

摘要SemEval-2任务8专注于名词对之间语义关系的多分类。 该任务旨在比较语义关系分类的不同方法&#xff0c;并为将来的研究提供标准的测试平台。 本文定义了任务&#xff0c;描述了训练和测试数据及其创建过程&#xff0c;列出了参与的系统&#xff08;10个团队&#xff0c;28…

tomcat GET 编码疑惑

本机开发环境 Windows tomcat eclipse 测试运行环境 Linux tomcat 大部分人知道&#xff0c;客户端GET方式提交的数据&#xff0c;tomcat默认按 iso-8859-1 处理。POST 方式 UTF-8。 今天遇到了GET也是默认按照UTF-8处理的情况&#xff0c;但是并未对tomcat的server.xml做过处理…

python恶搞代码打开对方摄像头_用Python获取摄像头并实时控制人脸的实现示例

实现流程 从摄像头获取视频流&#xff0c;并转换为一帧一帧的图像&#xff0c;然后将图像信息传递给opencv这个工具库处理&#xff0c;返回灰度图像&#xff08;就像你使用本地静态图片一样&#xff09; 程序启动后&#xff0c;根据监听器信息&#xff0c;使用一个while循环&am…

LeetCode 992. K 个不同整数的子数组(双指针)

文章目录1. 题目2. 解题1. 题目 给定一个正整数数组 A&#xff0c;如果 A 的某个子数组中不同整数的个数恰好为 K&#xff0c;则称 A 的这个连续、不一定独立的子数组为好子数组。 &#xff08;例如&#xff0c;[1,2,3,1,2] 中有 3 个不同的整数&#xff1a;1&#xff0c;2&a…

压缩可以卸载吗_番禺街坊注意!微信发送高清大文件不压缩,网友:QQ可以卸载了?...

刚上新了表情包的微信又双叒叕出新功能了这次的功能有点实用昨天&#xff0c;腾讯微信团队宣布微信已支持向朋友发送高清视频和图片且不会被压缩微信用户点击对话框右下角的号右滑点击文件在上方选择手机相册就能选择用户想要发送的视频和图片了目前通过「文件」方式发送的内容…

从一个视图控制器切换到另一个视图控制器的几种方式

从一个视图控制器切换到另一个视图控制器的几种方式1,模态(modal)画面的显示方法&#xff1a;例如iphone通讯录管理程序中&#xff0c;追加新的通讯纪录时&#xff0c;就是使用这种模态画面例&#xff1a;点击一个按钮&#xff0c;进入另一个界面- (IBAction)pressAbout:(id)se…

python暂停和恢复_python – 暂停和恢复QThread

我正在尝试暂停QThread并恢复它. 所以,我在QThread中有一个RFID读取循环,我想在阅读器获得RFID代码时暂停无限循环.之后,有一个数据库检查.在检查结束时,我想恢复RFID阅读循环以获取其他代码. MVCE&#xff1a; def main(): global Thread app QtGui.QApplication(sys.argv) m…

date format 精辟讲解

link: http://stackoverflow.com/questions/19533933/nsdateformatter-how-to-convert-wed-23-oct-2013-045615-gmt-to-local-time转载于:https://www.cnblogs.com/ouyangfang/p/4028508.html

python怎么给画布填上颜色_python numpy matplotlib画小方块填充背景色和添加不同色彩的文字...

需要根据不同的数值生成不同色彩的小方块&#xff0c;并标明数值&#xff0c;考虑到各种色彩的方块&#xff0c;如果采用文字采用黑色或者白色总是避免不了和背景色重复&#xff0c;所以把数值转化成rgb(0x11,0xf0,0x3b)类似的值&#xff0c;然后文字采用rgb(255-0x11,255-0xf0…

LeetCode 1755. 最接近目标值的子序列和(状态枚举 + 双指针)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums 和一个目标值 goal 。 你需要从 nums 中选出一个子序列&#xff0c;使子序列元素总和最接近 goal 。 也就是说&#xff0c;如果子序列元素和为 sum &#xff0c;你需要 最小化绝对差 abs(sum - goal) 。 返回 abs(sum …

python简单实践作业答案_python入门实践四:爬取牛客网面试专项练习题及答案

说明:个人练手python用。操作系统&#xff1a;window10 x64IDE&#xff1a;Pycharm 2017.2.2Python版本&#xff1a;3.6.2目标牛客网是一个IT笔试面试的平台&#xff0c;提供了很多题库&#xff0c;今天我们使用python爬取其中的Java专项练习库。步骤1、接口抓取&#xff1a;如…

路由器距离向量算法计算举例_路由器基本原理是什么 路由器基本发展情况介绍【图文】...

PLC路由器原理和ARR路由器基本原理要实现网络中通信节点彼此之间的通信&#xff0c;首先必须给每个节点分配一个唯一的IP地址。路由器应该至少有两个网络端口&#xff0c;分别连接LAN或者WAN子网上&#xff0c;每个端口必须具有一个唯一的IP地址&#xff0c;并且要求与所连接IP…

Git 常用命令整理(持续更新)

#配置 git config --global user.name "Your Name" git config --global user.email "emailexample.com" #注意git config命令的--global参数&#xff0c;用了这个参数&#xff0c;表示这台机器上所有的Git仓库都会使用这个配置&#xff0c;当然也可以对某…

LintCode MySQL 1918. 第二高的球员的身高

文章目录1. 题目2. 解题1. 题目 编写一个 SQL 语句&#xff0c;获取球员 (players) 表中第二高的身高 (height) 表定义: players (球员表) https://www.lintcode.com/problem/1918 2. 解题 if(a,b,c), a true&#xff0c;执行 b&#xff0c; 否则 c -- Write your SQL Que…

matlab多种分配方案_基于MATLAB的水资源优化分配问题动态规划解法

基于MATLAB的水资源优化分配问题动态规划解法摘要&#xff1a;介绍了动态规划的基本原理&#xff0c;针对水资源分配问题进行了动态规划方法分析。针对具体问题采用逆序解法的表格法进行了计算&#xff0c;然后用matlab编制了相应的计算程序进行计算&#xff0c;避免了繁琐的人…