当前位置: 首页 > news >正文

1792. 最大平均通过率

Problem: 1792. 最大平均通过率

文章目录

  • 思路
  • 解题过程
  • 复杂度
  • Code

思路

优先队列。
分配学生应该分配到班级通过率变化量最大的班级,班级通过率变化量:
∆ = (pass + 1) / (total + 1) - pass / total;

解题过程

放入到最大堆中,堆顶为分配到一个extraStudents后班级通过率变化量最大的班级。
每分配一个学生,重新入队,因为通过计算优秀学生都进入同一班级递减。

复杂度

  • 时间复杂度: O(n+mlogn)O(n+mlogn)O(n+mlogn)
  • 空间复杂度: O(n)O(n)O(n)

Code

class Solution {
public:// 计算变化量double gain(int pass, int total) {return (double)(pass + 1) / (total + 1) - (double)pass / total;}double maxAverageRatio(vector<vector<int>>& classes, int extraStudents) {priority_queue<pair<double, pair<int, int>>> pq;// 初始化for (auto& c : classes) {pq.push({gain(c[0], c[1]), {c[0], c[1]}});}// 将学生分配,重新入队while (extraStudents--) {auto [g, cls] = pq.top();pq.pop();int pass = cls.first, total = cls.second;pass++;total++;pq.push({gain(pass, total), {pass, total}});}// 计算结果double sum = 0;while (!pq.empty()) {auto [g, cls] = pq.top();pq.pop();sum += (double)cls.first / cls.second;}return (double)sum / classes.size();}
};
http://www.dtcms.com/a/362182.html

相关文章:

  • 学习:uniapp全栈微信小程序vue3后台-暂时停更
  • 本地没有公网ip?用cloudflare部署内网穿透服务器,随时随地用自定义域名访问自己应用端口资源
  • 液态神经网络:智能制造的新引擎
  • 【跨境电商】上中下游解释,以宠物行业为例
  • 洛谷 c++ P1177 【模板】排序 题解
  • AutoSar RTE介绍
  • 特征增强方法【特征构建】
  • MVC、三层架构
  • RT-DETR网络结构
  • 并发之线程
  • 【思考】WSL是什么
  • 一、SVN与svnbucket.com常见问题解答
  • 从组分到涌现:系统科学视域下结构、功能与层级的辨析及在人工智能中的应用
  • 设备管理软件正在成为制造业企业的战略重点_HawkEye智能运维平台_璞华大数据
  • 对比Mysql理解OceanBase中的租户设计
  • PostgreSQL 从入门到精通:一场与开源数据库的深度对话
  • 时序数据库国产的有哪些?
  • 利用棒棒糖图探索Office (US)的IMDB评分
  • 毕业项目推荐:64-基于yolov8/yolov5/yolo11的蝴蝶种类检测识别系统(Python+卷积神经网络)
  • 如何修复 Vercel 函数超时并大幅降低云函数成本
  • 计组(2)CPU与指令
  • 我的学习经历,个人能力说明书,求职书
  • 伺服器模拟输入控制电机转速
  • 华为云CCE
  • 【计算岗位解析:从代码到产品,这些角色如何“造”出数字世界?】
  • SpringBoot的基础介绍,用法和配置
  • 线上API接口响应慢?一套高效排查与定位问题的心法
  • PyTorch 面试题及详细答案120题(96-105)-- 性能优化与调试
  • Java类的初始化顺序
  • 问题解决方法:qt的设计师页面怎么开启scroll area组件的滚轮功能