信息学奥赛一本通T1425:贪心算法 加工生产调度

【题目描述】某工厂收到了 n 个产品的订单,这 n 个产品分别在 A、B 两个车间加工,并且必须先在 A 车间加工后才可以到 B 车间加工。某个产品 i 在 A,B 两车间加工的时间分别为Ai,Bi。怎样安排这 n 个产品的加工顺序,才能使总的加工时间最短。这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在 A,B 两车间加工完毕的时间。【输入】第一行仅—个数据 n ,表示产品的数

信息学奥赛一本通T1425:加工生产调度

【题目描述】

某工厂收到了 n 个产品的订单,这 n 个产品分别在 A、B 两个车间加工,并且必须先在 A 车间加工后才可以到 B 车间加工。

某个产品 i 在 A,B 两车间加工的时间分别为Ai,Bi。怎样安排这 n 个产品的加工顺序,才能使总的加工时间最短。

这里所说的加工时间是指:从开始加工第一个产品到最后所有的产品都已在 A,B 两车间加工完毕的时间。

【输入】

第一行仅—个数据 n ,表示产品的数量;

接下来 n 个数据是表示这 n 个产品在 A 车间加工各自所要的时间;

最后的 n 个数据是表示这 n 个产品在 B 车间加工各自所要的时间。

【输出】

第一行一个数据,表示最少的加工时间;

第二行是一种最小加工时间的加工顺序。

【输入样例】

5
3 5 8 7 10
6 2 1 4 9

【输出样例】

34
1 5 4 2 3

【源程序】

#include<iostream>
#include<cstdio>
#include<cstdlib>
#include<string>
#include<cstring>
#include<cmath>
#include<ctime>
#include<algorithm>
#include<utility>
#include<stack>
#include<queue>
#include<vector>
#include<set>
#include<map>
#include<bitset>
#define EPS 1e-9
#define PI acos(-1.0)
#define INF 0x3f3f3f3f
#define LL long long
const int MOD = 1E9+7;
const int N = 100000+5;
const int dx[] = {-1,1,0,0,-1,-1,1,1};
const int dy[] = {0,0,-1,1,-1,1,-1,1};
using namespace std;
struct Node{
    int num;
    int id;
}m[N];
int a[N],b[N];
int res[N];
int main(){
    int n;
    scanf("%d",&n);
    for(int i=1;i<=n;i++)
        scanf("%d",&a[i]);
    for(int i=1;i<=n;i++)
        scanf("%d",&b[i]);

    for(int i=1;i<=n;i++){
        m[i].num=min(a[i],b[i]);
        m[i].id=i;
    }
    for(int i=1;i<=n-1;i++){
        for(int j=i+1;j<=n;j++){
            if(m[i].num>m[j].num){
                swap(m[i],m[j]);
            }
        }
    }


    int head=0,tail=n+1;
    for(int i=1;i<=n;i++){
        int num=m[i].num;
        int id=m[i].id;
        if(num==a[id])
            res[++head]=id;
        else
            res[--tail]=id;
    }

    int timeA=0,timeB=0;
    for(int i=1;i<=n;i++){
        timeA+=a[res[i]];
        if(timeB<timeA)
            timeB=timeA;
        timeB+=b[res[i]];
    }

    printf("%d\n",timeB);
    for(int i=1;i<=n;i++)
        printf("%d ",res[i]);
    printf("\n");
    return 0;
}

 

信息学奥赛一本通T1425:贪心算法 加工生产调度 归属于 贪心算法,更多同类题解源程序见:贪心算法 和 加工生产调度

0 条评论

请先 登录 后评论
不写代码的码农
轩爸

0 篇文章

作家榜 »

  1. admin 2 文章
  2. 张芳 0 文章
  3. hanna 0 文章
  4. Jason 0 文章
  5. lixiaioqian 0 文章
  6. GeraldWrora 0 文章
  7. 董伟 0 文章
  8. 信奥达人 0 文章