你有 n 个部下,每个部下需要完成一个任务。第 i 个部下需要你花 Bi 分钟交待任务,然后他会立刻独立地、无间断地执行 Ji 分钟后完成任务。你需要选择交待任务的顺序,使得所有任务尽早执行完毕(即最后一个执行完的任务尽早结束)。注意,不能同时给两个部下交待任务,但部下们可以同时执行他们各自的任务。

既然是要尽早完成任务,当然执行时间长的先交待,先执行。所以对所有数据按执行时间从大到小的顺序进行排序,然后开始处理,通过更新最晚的时间来得到最终结果。

简单的贪心,附上AC代码:

#include <stdio.h>
#include <math.h>
#include <iostream>
#include <cstdarg>
#include <algorithm>
#include <string.h>
#include <stdlib.h>
#include <string>
#include <list>
#include <vector>
#include <map>
long
sizeof(a))
namespace std;
  15:  
int count, ...)
  17: {
  18:     va_list arg_ptr;
  19:     va_start (arg_ptr, count);
int i = 0; i < count; i++)
int*));
  22:     va_end(arg_ptr);
  23: }
  24:  
struct A
  26: {
int b, j;
const
  29:     {
return j > x . j;
  31:     }
  32: }A;
  33:  
int main()
  35: {
int n, count = 1;
, &n) && n)
  38:     {
  39:         vector <A> buf;
int b, j;
int i = 0; i < n; i++)
  42:         {
, &b, &j);
  44:             buf.push_back((A){b, j});
  45:         }
  46:         sort(buf.begin(), buf.end());
int end = 0, now = 0, ans = 0;
int i = 0; i < n; i++)
  49:         {
  50:             now += buf[i] . b;
  51:             end = max(end, now + buf[i] . j);
  52:         }
, count++, end);
  54:     }
return 0;
  56: }

相关文章:

  • 2021-12-30
  • 2021-07-28
  • 2022-12-23
  • 2022-12-23
  • 2021-06-13
  • 2022-12-23
  • 2021-07-04
猜你喜欢
  • 2022-02-10
  • 2021-09-06
  • 2021-12-09
  • 2021-06-12
  • 2021-06-22
  • 2022-12-23
相关资源
相似解决方案