问题描述

1792. 最大平均通过率 (Medium)

一所学校里有一些班级,每个班级里有一些学生,现在每个班都会进行一场期末考试。给你一个二维数组 classes ,其中

classes[i] = [passᵢ, totalᵢ] ,表示你提前知道了第 i 个班级总共有

totalᵢ 个学生,其中只有 passᵢ 个学生可以通过考试。

给你一个整数 extraStudents ,表示额外有 extraStudents 个聪明的学生,他们

一定 能通过任何班级的期末考。你需要给这 extraStudents 个学生每人都安排一个班级,使得

所有 班级的 平均 通过率 最大

一个班级的 通过率 等于这个班级通过考试的学生人数除以这个班级的总人数。 平均通过率

是所有班级的通过率之和除以班级数目。

请你返回在安排这 extraStudents 个学生去对应班级后的 最大 平均通过率。与标准答案误差范围在

10-⁵ 以内的结果都会视为正确结果。

示例 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⁵
  • classes[i].length == 2
  • 1 <= passᵢ <= totalᵢ <= 10⁵
  • 1 <= extraStudents <= 10⁵

解题思路

贪心,每次选择使通过率提升最大的那个班级,利用优先队列来模拟这个过程。

代码

class Solution {
public:
double maxAverageRatio(vector<vector<int>> &classes, int extraStudents) {
auto cmp = [&](int a, int b) {
return (double)(classes[a][1] - classes[a][0]) / ((long long)classes[a][1] * classes[a][1] + classes[a][1]) < (double)(classes[b][1] - classes[b][0]) / ((long long)classes[b][1] * classes[b][1] + classes[b][1]);
};
std::priority_queue<int, vector<int>, decltype(cmp)> pq(cmp);
for (int i = 0; i < classes.size(); i++) {
pq.push(i);
}
for (int num = 1; num <= extraStudents; num++) {
int idx = pq.top();
pq.pop();
classes[idx][0] += 1;
classes[idx][1] += 1;
pq.push(idx);
}
double res = 0;
for (auto &vec : classes) {
res += (double)(vec[0]) / vec[1];
}
return res / classes.size();
}
};

1792. 最大平均通过率 (Medium)的更多相关文章

  1. [echarts] 同指标对比柱状图

    需求:对比课程通过率最高的8个课程和最低的8个课程以及全校的平均通过率 http://echarts.baidu.com/echarts2/doc/example/bar1.html option = ...

  2. SQL29 计算用户的平均次日留存率

    SQL29 计算用户的平均次日留存率 困难 通过率:48.58% 时间限制:1秒 空间限制:256M 描述 题目:现在运营想要查看用户在某天刷题后第二天还会再来刷题的平均概率.请你取出相应数据. 示例 ...

  3. 告别被拒,如何提升iOS审核通过率(上篇)

    iOS审核一直是每款移动产品上架苹果商店时面对的一座大山,每次提审都像是一次漫长而又悲壮的旅行,经常被苹果拒之门外,无比煎熬.那么问题来了,我们有没有什么办法准确把握苹果审核准则,从而提升审核的通过率 ...

  4. 告别被拒,如何提升iOS审核通过率(下篇)——应用内容检查大法与提审资源检查大法

    WeTest 导读 之前的<告别被拒,如何提升iOS审核通过率(上篇)>分享了客户端检查的相关要点,本篇会给大家介绍有关应用内容的检查项和提审资源相关检查项要点. 应用内容检查大法 苹果对 ...

  5. 提升iOS审核通过率之“IPv6兼容测试”

    作者:jingle 腾讯系统测试工程师 商业转载请联系腾讯WeTest授权,非商业转载请注明出处. 原文链接:http://wetest.qq.com/lab/view/285.html 一.背景 在 ...

  6. 10大Python开源项目推荐(Github平均star2135)

    翻译 | suisui 来源 | 人工智能头条(AI_Thinker) 继续假日充电系列~本文是 Mybridge 挑选的 10 个 Python 开源项目,Github 平均star 2135,希望 ...

  7. iOS审核总被拒?腾讯教你提升iOS审核通过率!

    作者:Jamie,腾讯开发工程师,在iOS预审和ASO优化领域从事专项测试相关工作,为腾讯游戏近100个产品提供专项服务. 商业转载请联系腾讯WeTest获得授权,非商业转载请注明出处. WeTest ...

  8. 介质访问控制子层-Medium Access Control Sublayer:多路访问协议、以太网、无线局域网

    第四章 介质访问控制子层-Medium Access Control Sub-layer 4.1介质访问控制子层概述 MAC子层不属于之前提到的OSI或TCP/IP架构的任何一层,这也是为什么这一层被 ...

  9. OpenCV2+入门系列(四):计算图像的直方图,平均灰度,灰度方差

    本篇懒得排版,直接在网页html编辑器编辑 在图像处理时,我们常常需要求出图像的直方图.灰度平均值.灰度的方差,这里给出一个opencv2+自带程序,实现这些功能. 直方图 对于直方图,使用cv::c ...

  10. 一个简单的金额平均分配函数(C#版)

    //总金额平均分配给总人数 //参数说明:总金额,总人数,最大金额为平均金额的倍率 public double[] GetList(double zje,int zrs,int max) { doub ...

随机推荐

  1. cat /dev/null > file后,ls查看文件大小未减小,du查看变为0

    一句话总结: 其他程序正在使用command > file写入文件:将command程序kill后使用command >> file写入文件,即可在command写入file时,用c ...

  2. 禅道服务崩溃 Can't init tc log

      0.环境 禅道 版本12.4.3 数据库 10.1.22-MariaDB SQL 服务器 192.168.0.82 centos 7 step 1.问题 磁盘爆满后,禅道在启动时报数据库 Can' ...

  3. java 实现Excel导入导出功能

    本文记录 首先需要准备一个导入模板的实体类 import cn.iocoder.yudao.framework.excel.core.annotations.DictFormat; import cn ...

  4. MC 咖啡杯

    #include <iostream> #include "minecraft.h" #include <windows.h> using namespac ...

  5. Lazarus 开发环境使用技巧

    Lazarus 开发环境使用技巧 1.代码补全 按下键盘的Ctrl+W键!输入变量后按下这个键就OK啦- 2.自动完成 自动完成的快捷键大多数都冲突了,解决方法是打开 工具(T)->选项...- ...

  6. 腾讯云静态资源放到cos存储桶里,并开启CDN自定义域名加速

    首先根据腾讯云cos对应文档创建cos存储桶(权限为共有读私有写),上传build之后的静态文件到存储桶根目录,然后配置静态网站,然后访问静态网站的访问节点,如果报错请配置索引文档和错误文档为inde ...

  7. C#连Mysql数据库报错 SSL Connection error

    MySql.Data.MySqlClient.MySqlException (0x80004005): SSL Connection error. ---> System.AggregateEx ...

  8. GIS空间分析和建模复习重点3

    22.网络分析的相关算法 (1)Dijkstra算法(求解给定点与其他所有点之间的最短路径即单源点最短路径问题) (2)Floyd算法(直接计算任意两节点之间最短路) (3)最小生成树即Prim算法. ...

  9. virtualbox vbox硬件级虚拟机去除虚拟化过检测 批量修改启动克隆 vbox超级加强版 V2022

     vbox硬件级虚拟机-2020年12月新内核6.0发布  软件价格500每套(特价促销 原价800)咨询ΩΩ: 131 1190 882 软件绑定加密狗使用,不绑定电脑购买后发加密狗,等收到加密狗后 ...

  10. 如何完整卸载sketchup草图大师?

    如何完整卸载sketchup草图大师?完全彻底卸载删除干净sketchup各种残留注册表和文件的方法和步骤.如何卸载sketchup呢?有很多同学想把sketchup卸载后重新安装,但是发现sketc ...