流水作业调度(dp)

本文探讨了在由两台机器M1和M2组成的流水线上,如何优化n个作业的加工顺序,以最小化从开始到结束的总加工时间。通过给出的代码示例,展示了具体的调度策略,输出的作业顺序表明了这种策略如何降低整体完成时间。
摘要由CSDN通过智能技术生成

题目:

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

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


代码:

#include <bits/stdc++.h>

using namespace std;
const int MAXN=1010;
struct node
{
    int min_cost,index;
    bool flag;
};
node d[MAXN];
bool cmp(node a,node b)
{
    return a.min_cost<b.min_cost;
}
int main()
{
    int n,a[MAXN],b[MAXN],bq[MAXN];
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        cin>>a[i]>>b[i];
        d[i].min_cost=min(a[i],b[i]);
        d[i].index=i;
        d[i].flag=a[i]<b[i];
    }
    sort(d+1,d+1+n,cmp);
    int head=1,tail=n;
    for(int i=1;i<=n;i++)
        if(d[i].flag) bq[head++]=d[i].index;
        else bq[tail--]=d[
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值