1256: 多机调度

时间限制: 1 Sec  内存限制: 128 MB
提交: 1153  解决: 763
[提交] [状态] [讨论版] [命题人:外部导入]
题目描述
有n台规格一样的机器同时工作,有m个零件需要加工,第i个零件加工时间为ti,请你计算出加工完这批零件最少需要多少时间。
输入
第一行为两个整数n,m。n表示机器数,m表示零件数(1<=n<=1e3,1<=m<=1e5)。
接下来一行m个整数为每个零件需要的加工时间(1<=ti<=1e3)。
输出
加工所有零件需要的最少时间。
样例输入 Copy
3 5
2 3 4 5 6 
样例输出 Copy
7
来源/分类
贪心 
 


import java.util.*;
//1256
public class Main {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int n = scanner.nextInt(); // 机器数
        int m = scanner.nextInt(); // 零件数
 
        // 读取每个零件的加工时间并按照工艺时间从大到小排序
        PriorityQueue<Integer> parts = new PriorityQueue<>(Collections.reverseOrder());
        for (int i = 0; i < m; i++) {
            parts.add(scanner.nextInt());
        }
 
        // 创建大小为机器数的数组,记录每台机器的总工作时间
        int[] machines = new int[n];
 
        // 依次将每个零件分配给当前总工作时间最少的机器,更新机器的总工作时间
        while (!parts.isEmpty()) {
            int minIndex = findMinIndex(machines);
            machines[minIndex] += parts.poll();
        }
 
        // 找到所有机器中总工作时间最长的值,即为所需的最小时间
        int maxTime = machines[0];
        for (int i = 1; i < n; i++) {
            if (machines[i] > maxTime) {
                maxTime = machines[i];
            }
        }
        System.out.println(maxTime);
    }
 
    // 辅助函数:找到当前总工作时间最少的机器的索引
    private static int findMinIndex(int[] machines) {
        int minIndex = 0;
        for (int i = 1; i < machines.length; i++) {
            if (machines[i] < machines[minIndex]) {
                minIndex = i;
            }
        }
        return minIndex;
    }
}

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Linux DAY 6 _systemctl

systemctl命令&#xff0c;通过这个命令控制系统操作 语法&#xff1a;systemctl start | stop | status | enable | disable 服务名 start 启动 stop 关闭 status 查看状态 enable 开启开机自启 disable 关闭开机自启 服务名&#xff1a; NetworkManager 主网络服务 net…

DFE_offset失调校准

1.校准原因 *制造工艺的限制&#xff1a;晶体管在制造过程中&#xff0c;由于工艺的限制&#xff0c;不可能做到完全对称&#xff0c;这导致了输入级晶体管的性能存在微小的差异。 *输入级偏置电流的不对称&#xff1a;输入级晶体管的偏置电流也会存在差异&#xff0c;这也会…

如何在OpenHarmony上使用SeetaFace2人脸识别库?

简介 相信大部分同学们都已了解或接触过OpenAtom OpenHarmony&#xff08;以下简称“OpenHarmony”&#xff09;了&#xff0c;但你一定没在OpenHarmony上实现过人脸识别功能&#xff0c;跟着本文带你快速在OpenHarmony标准设备上基于SeetaFace2和OpenCV实现人脸识别。 项目效…

如何理解kmp的套娃式算法啊?

概念 KMP算法&#xff0c;全称Knuth Morris Pratt算法 。文章大部分内容出自《数据结构与算法之美》 核心思想 假设主串是a&#xff0c;模式串是b 在模式串与主串匹配的过程中&#xff0c;当遇到不可匹配的字符的时候&#xff0c;对已经对比过的字符&#xff0c;是否能找到…

向上调整建堆与向下调整建堆的时间复杂度 AND TopK问题

目录 前言建堆的时间复杂度TOPK问题总结 前言 本篇旨在介绍使用向上调整建堆与向下调整建堆的时间复杂度. 以及topk问题 博客主页: 酷酷学!!! 感谢关注~ 建堆的时间复杂度 堆排序是一种优于冒泡排序的算法, 那么在进行堆排序之前, 我们需要先创建堆, 为什么说堆排序的是优于…

YOLOv8绘制map曲线图

yolov8源码绘制的map曲线图不够清晰&#xff0c;python代码绘制的曲线图导入word之后清晰度也不够高&#xff0c;所以选择使用matlab来绘制曲线图&#xff0c;matlab可以直接复制图窗到word中&#xff0c;在转换成pdf也不会失真。点击编辑&#xff0c;复制图窗即可复制到word中…

【Linux】:Linux 2.6内核 调度队列和调度原理

朋友们、伙计们&#xff0c;我们又见面了&#xff0c;本期来给大家解读一下有关Linux 2.6内核 调度队列和调度原理&#xff0c;如果看完之后对你有一定的启发&#xff0c;那么请留下你的三连&#xff0c;祝大家心想事成&#xff01; C 语 言 专 栏&#xff1a;C语言&#xff1a…

做抖店需要截流吗?聊下抖店的出单玩法和运营思路

我是王路飞。 做抖店需要截流吗&#xff1f; 关于抖店的玩法&#xff0c;一直都是众说纷纭&#xff0c;谁都想发表点自己的意见。 尤其是很多新手&#xff0c;可能以前接触过淘宝等传统电商&#xff0c;对截流等玩法有个基本了解&#xff0c;就认为抖店是不是也是这样玩的。…

使用Flask ORM进行数据库操作的技术指南

文章目录 安装Flask SQLAlchemy配置数据库连接创建模型类数据库操作插入数据查询数据更新数据删除数据 总结 Flask是一个轻量级的Python Web框架&#xff0c;其灵活性和易用性使其成为开发人员喜爱的选择。而ORM&#xff08;对象关系映射&#xff09;则是一种将数据库中的表与面…

免费开源人脸识别系统,支持RESTful API

简介 CompreFace 是一个免费开源的人脸识别项目&#xff0c;您不需要具备机器学习技能就能安装设置和使用 CompreFace&#xff0c;官方提供了基于 docker 的部署方法&#xff0c;可以方便地部署在本地或者云端服务器上。 CompreFace 提供了 RESTful API&#xff0c;用于人脸识别…

超详细的前后端实战项目(Spring系列加上vue3)(一步步实现+源码)前端篇(一)

最近想着一步步搭建一个前后端项目&#xff0c;将每一步详细的做出来。&#xff08;如果有不足或者建议&#xff0c;也希望大佬们指出哦&#xff09; 前端初始化 1.根据vue脚手架创建vue项目 这里可以用很多方法创建vue项目&#xff0c;大家看着创建吧&#xff0c;只要能创建…

C++、与C语言的一些变化、新增的一些函数类型、面向对象程序设计的基本特点

C 面向对象的编程思想 万物皆对象 类库&#xff1a; MFC Qt opencv opengl cout&#xff1a;标准输出流对象 endl&#xff1a;换行符 新的数据类型 bool型&#xff1a;逻辑真假—— true、false 变量的存储类型 auto&#xff1a;变量在定义时由编译器自动推到…

Linux网络配置全攻略:解读/etc/network/interfaces文件的精髓

欢迎来到我的博客&#xff0c;代码的世界里&#xff0c;每一行都是一个故事 Linux网络配置全攻略&#xff1a;解读/etc/network/interfaces文件的精髓 前言文件结构与基本概念配置网络接口的常用参数高级网络配置技巧实用工具与调试技巧实战案例与最佳实践 前言 在我们的日常生…

JVM(7):虚拟机性能分析和故障解决工具之jstat工具

1 jstat(JVM Statistics Monitoring Tool)作用 监视虚拟机各种运行状态信息&#xff0c;可以显示本地或者是远程虚拟机进程中的类装载、内存、垃圾收集、JIT编译等运行数据 2 命令格式 jstat [options vmid [interval[count]]] 参数解释 第一个参数&#xff1a;options 代…

谷歌插件编写

目录 manifest.json {"manifest_version": 3,"name": "Floating Ball","version": "1.0","description": "A floating ball on the right side of the webpage.","permissions": ["act…

C语言 数组——计算最大值的函数实现

目录 计算最大值 计算最大值的函数实现 应用实例&#xff1a;计算班级最高分​编辑​编辑 返回最大值所在的下标位置 返回最大值下标位置的函数实现​编辑 一个综合应用实例——青歌赛选手评分​编辑​编辑​编辑​编辑​编辑 计算最大值 计算最大值的函数实现 应用实例&…

hcia datacom学习(8):静态NAT、动态NAT、NAPT、Easy IP、NAT server

1.私网地址 在现实环境中&#xff0c;企业、家庭使用的网络是私网地址&#xff08;内网&#xff09;&#xff0c;运营商维护的网络则是公网地址&#xff08;外网&#xff09;。私网地址是在局域网&#xff08;LAN&#xff09;内使用的&#xff0c;因此无法被路由&#xff0c;不…

多线程讲解(详解)

目录 什么是多线程&#xff1f; 为什么要使用多线程&#xff1f; 线程的创建 使用Thread实现 从以上代码我们梳理一下多线程创建步骤&#xff1a; 注意&#xff1a; 小示例 首先&#xff0c;引入依赖 然后&#xff0c;按照我们刚刚说的构建多线程的步骤进行构建&#…

【C++】牛客 ——NC138 矩阵最长递增路径

✨题目链接&#xff1a; NC138 矩阵最长递增路径 ✨题目描述 给定一个 n 行 m 列矩阵 matrix &#xff0c;矩阵内所有数均为非负整数。 你需要在矩阵中找到一条最长路径&#xff0c;使这条路径上的元素是递增的。并输出这条最长路径的长度。 这个路径必须满足以下条件&#…

医学科技查新中对查新点的撰写方法!附案例讲解!

我国的科技查新工作最早是从医学领域开始的&#xff0c;始于1985年中国科学院医学情报所&#xff0c;后来逐步发展到工、农等其 他各个领域。医学科技查新包括立项查新和成果查新两个部分&#xff0c;其中医学立项查新&#xff0c;它是指在医学科研项目申报开题之前&#xff0c…