当前位置:   article > 正文

华为OD真题-流水线-带答案_华为od算法题

华为od算法题

 

题目描述:

一个工厂有m条流水线,来并行完成n个独立的作业,该工厂设置了一个调度系统,在安排作业时,总是优先执行处理时间最短的作业。
现给定流水线个数m,需要完成的作业数n, 每个作业的处理时间分别为t1,t2…tn。请你编程计算处理完所有作业的耗时为多少?
当n>m时,首先处理时间短的m个作业进入流水线,其他的等待,当某个作业完成时,依次从剩余作业中取处理时间最短的进入处理。


输入描述:

第一行为2个整数(采用空格分隔),分别表示流水线个数m和作业数n
第二行输入n个整数(采用空格分隔),表示每个作业的处理时长t1,t2…tn。
0< m,n<100
0<t1,t2…tn<100
注:保证输入都是合法的。
输出描述:

输出处理完所有作业的总时长
示例

输入:

3 5
8 4 3 2 10
输出:

13
说明:

先安排时间为2、3、4的3个作业。
第一条流水线先完成作业,然后调度剩余时间最短的作业8。
第二条流水线完成作业,然后调度剩余时间最短的作业10。
总工耗时就是第二条流水线完成作业的时间13(3+10)。
 

  1. public class PlantSchedule {
  2. public static void main(String[] args) {
  3. Scanner sc = new Scanner(System.in);
  4. int line = sc.nextInt();
  5. int task = sc.nextInt();
  6. List<Integer> taskList = new ArrayList<>();
  7. for(int i = 0; i < task;i++){
  8. taskList.add(sc.nextInt());
  9. }
  10. //按作业花费时间从小到大排序
  11. Collections.sort(taskList);
  12. //(滑动窗口)最后的3个正在进行的作业以最后一个值为准 + 倒数第四个用的时间
  13. int time = taskList.get(taskList.size() -1 - line) + taskList.get(taskList.size() -1);
  14. System.out.println(time);
  15. }
  16. }

 

 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Gausst松鼠会/article/detail/240795
推荐阅读
相关标签
  

闽ICP备14008679号