当前位置:   article > 正文

流水作业调度(dp)_作业调度的dp

作业调度的dp

题目:

n个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为ai和bi。

流水作业调度问题要求确定这n个作业的最优加工顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。


代码:

  1. #include <bits/stdc++.h>
  2. using namespace std;
  3. const int MAXN=1010;
  4. struct node
  5. {
  6. int min_cost,index;
  7. bool flag;
  8. };
  9. node d[MAXN];
  10. bool cmp(node a,node b)
  11. {
  12. return a.min_cost<b.min_cost;
  13. }
  14. int main()
  15. {
  16. int n,a[MAXN],b[MAXN],bq[MAXN];
  17. cin>>n;
  18. for(int i=1;i<=n;i++)
  19. {
  20. cin>>a[i]>>b[i];
  21. d[i].min_cost=min(a[i],b[i]);
  22. d[i].index=i;
  23. d[i].flag=a[i]<b[i];
  24. }
  25. sort(d+1,d+1+n,cmp);
  26. int head=1,tail=n;
  27. for(int i=1;i<=n;i++)
  28. if(d[i].flag) bq[head++]=d[i].index;
  29. else bq[tail--]=d[
声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:【wpsshop博客】
推荐阅读
相关标签
  

闽ICP备14008679号