LeetCode 1792. 最大平均通过率(优先队列)

文章目录

    • 1. 题目
    • 2. 解题

1. 题目

一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试。
给你一个二维数组 classes ,其中 classes[i] = [passi, totali] ,表示你提前知道了第 i 个班级总共有 totali 个学生,其中只有 passi 个学生可以通过考试。

给你一个整数 extraStudents ,表示额外有 extraStudents 个聪明的学生,他们 一定 能通过任何班级的期末考。
你需要给这 extraStudents 个学生每人都安排一个班级,使得 所有 班级的 平均 通过率 最大 。

一个班级的 通过率 等于这个班级通过考试的学生人数除以这个班级的总人数。
平均通过率 是所有班级的通过率之和除以班级数目。

请你返回在安排这 extraStudents 个学生去对应班级后的 最大 平均通过率。
与标准答案误差范围在 10^-5 以内的结果都会视为正确结果。

示例 1:
输入:classes = [[1,2],[3,5],[2,2]], extraStudents = 2
输出:0.78333
解释:你可以将额外的两个学生都安排到第一个班级,
平均通过率为 (3/4 + 3/5 + 2/2) / 3 = 0.78333 。示例 2:
输入:classes = [[2,4],[3,9],[4,5],[2,10]], extraStudents = 4
输出:0.53485提示:
1 <= classes.length <= 10^5
classes[i].length == 2
1 <= passi <= totali <= 10^5
1 <= extraStudents <= 10^5

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

2. 解题

  • 通过率增加的多的优先
// 超时
struct cmp{bool operator()(vector<int>& a, vector<int>& b) const{return double(a[0]+1)/(a[1]+1)-double(a[0])/a[1] < double(b[0]+1)/(b[1]+1)-double(b[0])/b[1];}
};
class Solution {
public:double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) {priority_queue<vector<int>, vector<vector<int>>, cmp> q;for(auto& c : classes)q.push(c);vector<int> c;while(extraStudents--){c = q.top();q.pop();q.push({c[0]+1, c[1]+1});}double ans = 0;while(!q.empty()){ans += q.top()[0]/double(q.top()[1]);q.pop();}return ans/classes.size();}
};

参考 zerotrac 🌸 的写法才不超时。

  • tuple<double,int,int>auto [d, x, y] = q.top()
// 更改写法
class Solution {
public:double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) {priority_queue<tuple<double,int,int>> q;for(auto& c : classes)q.push(tuple(delta(c[0], c[1]), c[0], c[1]));while(extraStudents--){auto [d, x, y] = q.top();q.pop();q.push(tuple(delta(x+1, y+1), x+1, y+1));}double ans = 0;while(!q.empty()){auto [d, x, y] = q.top();q.pop();ans += x/double(y);}return ans/classes.size();}double delta(int x, int y){return double(x+1)/(y+1)-double(x)/y;}
};

1288 ms 91.2 MB C++


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

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

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

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

相关文章

分段线性插值c语言程序_【短道速滑】OpenCV中cvResize函数使用双线性插值缩小图像长宽大小一半时速度飞快(比最近邻还快)之异象解析和自我实现。...

点击上方↑↑↑“OpenCV学堂”关注我作者网名&#xff1a;laviewpbt是图像处理&#xff0c;算法实现与加速优化方面的大神&#xff01;其开发的imageshop软件大小只有1MB&#xff0c;却实现了非常丰富与复杂的各种图像处理功能&#xff0c;邮箱地址为&#xff1a;Email: laview…

端口可以随便设置吗_驱动可以随便更新吗?

答案是&#xff0c;真的不可以&#xff0c;我真的吐了&#xff0c;当你用驱动感觉合适&#xff0c;显卡驱动没有卡屏或者黑屏什么的&#xff0c;网卡用着正常的话就不要盲目更新了&#xff0c;我今天就是更新了网卡&#xff0c;结果就断网了&#xff0c;删除了恢复旧版没用&…

IOS学习:常用第三方库(GDataXMLNode:xml解析库)

IOS学习&#xff1a;常用第三方库&#xff08;GDataXMLNode&#xff1a;xml解析库&#xff09; 解析 XML 通常有两种方式&#xff0c;DOM 和 SAX&#xff1a; DOM解析XML时&#xff0c;读入整个XML文档并构建一个驻留内存的树结构&#xff08;节点树&#xff09;&#xff0c;通…

php必须汉字,php怎么只保留汉字

php只保留汉字的实现方法&#xff1a;首先创建一个PHP示例文件&#xff1b;然后通过mb_convert_encoding进行转码&#xff1b;最后通过preg_match_all实现过滤掉非汉字字符只保留中文字符即可。本文操作环境&#xff1a;windows7系统、PHP7.1版&#xff0c;DELL G3电脑PHP实现过…

LeetCode 1793. 好子数组的最大分数(单调栈)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 nums &#xff08;下标从 0 开始&#xff09;和一个整数 k 。 一个子数组 (i, j) 的 分数 定义为 min(nums[i], nums[i1], ..., nums[j]) * (j - i 1) 。一个 好 子数组的两个端点下标需要满足 i < k < j 。 请你返回…

hbase的2.2.4版本支持哪个版本的hadoop_Hadoop 2.7 不停服升级到 3.2 在滴滴的实践

桔妹导读&#xff1a;Hadoop 3的第一个稳定版本在2017年底就已经发布了&#xff0c;有了很多重大的改进。在HDFS方面&#xff0c;支持了Erasure Coding、More than 2 NameNodes、Router-Based Federation、Intra-datanode balancer 等功能&#xff0c;大家可能对这些功能很感兴…

pcb只开窗不镀锡_案例图解射频PCB设计要点

在电子产品和设备中&#xff0c;电路板是一个不可缺少的部件&#xff0c;它起着电路系统的电气和机械等的连接作用。如何将电路中的元器件按照一定的要求&#xff0c;在PCB上排列组合起来&#xff0c;是PCB设计师的主要任务之一。布局设计不是简单的将元器件在PCB上排列起来&am…

HDFS Java API 实践

文章目录1. 启动 Hadoop 集群2. 使用 HDFS Shell3. 使用 HDFS Web UI4. 安装 Eclipse IDE4.1 上传文件4.2 查询文件位置4.3 创建目录4.4 读取文件内容4.5 写入文件1. 启动 Hadoop 集群 安装集群&#xff1a;https://michael.blog.csdn.net/article/details/114607857 启动命令…

python 一组数据 正态分布散点图_利用Python进行数据分析之多元线性回归案例

线性回归模型属于经典的统计学模型&#xff0c;该模型的应用场景是根据已知的变量&#xff08;自变量&#xff09;来预测某个连续的数值变量&#xff08;因变量&#xff09;。例如&#xff0c;餐厅根据每天的营业数据&#xff08;包括菜谱价格、就餐人数、预定人数、特价菜折扣…

php7 关联nginx,nginx+php7配合开发

1 源码安装php7下载php7./configure --eable fpm --prefix路径(指定路径&#xff0c;所有的文件会安装在这里。不然会文件会分散到别的地方)make & make install完成php的安装(如果想要按照php扩展可以用pecl命令或者phpize命令来按照)2 安装nginxyum install nginx开启ng…

python 量化交易_基于Python的量化交易工具清单(上)

—— Python量化工具清单 ——以下内容来源于Wilson Freitas的Github项目"Awesome Quant"。原文中包含了丰富的语言类别&#xff0c;但是后续介绍主要针对Python语言。原网址&#xff1a;https://github.com/ wilsonfreitas/awesome-quant基于Python的量化交易工具清…

jlist放jbutton 按钮事件失效_电动高处作业吊篮操作如何面对一些突发事件

电动吊篮从推广发展初期的不认识&#xff0c;不理解&#xff0c;不使用到今天在大中城市的建筑业中成了一种不可缺少的必备机具&#xff0c;在建筑工程施工技术工艺水平上和以往的脚手架相比&#xff0c;更是有一个空前的飞跃。正是由于电动吊篮加高方便、操作简单、安全可靠、…

LintCode MySQL 1968. 查询首两个字母在 ‘Db‘ 和 ‘Dy‘ 之间的课程名称(REGEXP正则)

文章目录1. 题目2. 解题1. 题目 描述 请编写 SQL 语句&#xff0c;查询 courses 表中&#xff0c;课程名首两个字母在 ‘Db’ 和 ‘Dy’ 之间所有课程的名称 https://www.lintcode.com/problem/1968 2. 解题 -- Write your SQL Query here -- -- example: SELECT * FROM XX_…

erp系统方案书_门禁系统方案书

门禁系统概述传统意义的门禁系统是由琐和钥匙构成&#xff0c;以钥匙代表着出入权限。但社会发展至今&#xff0c;以铁锁和钥匙为代表的传统房门管理方式正在逐渐消失&#xff0c;加上IC卡技术、数字技术、网络技术的应用日益成熟&#xff0c;管理安全、可靠、灵活、和方便的IC…

mybatisplus 操作另一个数据库的数据_MySQL的数据库操作详解

一、mysql查看数据库在 MySQL 中&#xff0c;可使用 SHOW DATABASES 语句来查看或显示当前用户权限范围以内的数据库。查看数据库的语法格式为&#xff1a;SHOW DATABASES [LIKE 数据库名];//例子SHOW DATABASES;SHOW DATABASES like mynews;show databases like %name%;语法说…

LeetCode 385. 迷你语法分析器(栈)

文章目录1. 题目2. 解题1. 题目 给定一个用字符串表示的整数的嵌套列表&#xff0c;实现一个解析它的语法分析器。 列表中的每个元素只可能是整数或整数嵌套列表 提示&#xff1a;你可以假定这些字符串都是格式良好的&#xff1a; 字符串非空 字符串不包含空格 字符串只包含…

php unicode 插入 mysql_关于MySQL的一些骚操作——提升正确性,抠点性能

推荐阅读&#xff1a;我凭借这份pdf拿下了蚂蚁金服、字节跳动、小米等大厂的offer概要回顾以前写的项目&#xff0c;发现在规范的时候&#xff0c;还是可以做点骚操作的。假使以后还有新的项目用到了MySQL&#xff0c;那么肯定是要实践一番的。为了准备&#xff0c;创建测试数据…

docker $PWD路径_Docker 技术系列之安装Redis单机版和集群版

欢迎关注刘哥讲技术。上一节我们讲到通过docker安装了多台的mysql&#xff0c;很简单&#xff0c;那么我们这一节&#xff0c;利用 Docker 在一台机器上部署多个 Redis 实例。那么redis是什么呢&#xff1f;Redis 是一个开源的使用 ANSI C 语言编写、支持网络、可基于内存亦可持…

LeetCode 1191. K 次串联后最大子数组之和(前缀和+分类讨论)

文章目录1. 题目2. 解题1. 题目 给你一个整数数组 arr 和一个整数 k。 首先&#xff0c;我们要对该数组进行修改&#xff0c;即把原数组 arr 重复 k 次。 举个例子&#xff0c;如果 arr [1, 2] 且 k 3&#xff0c;那么修改后的数组就是 [1, 2, 1, 2, 1, 2]。 然后&#x…

sql 拆分_实践参考:MySQL架构设计从开发规范、选型、拆分到减压实战指南

导引作者&#xff0c;李辉&#xff0c;原新浪爱彩票运维负责人&#xff0c;常用网名&#xff1a;门牙没了。曾主导新浪爱彩票的MySQL运维工作。培训合伙人、资深讲师&#xff0c;中国科学院大学在读研究生(大数据方向)&#xff0c;擅长大型项目的关系型数据库运维和管理&#x…