zoukankan      html  css  js  c++  java
  • loj10003加工生产调度

    题目描述

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

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

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

    输入格式

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

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

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

    输出格式

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

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

    样例

    样例输入

    5
    3 5 8 7 10
    6 2 1 4 9
    

    样例输出

    34
    1 5 4 2 3
    

    数据范围与提示

    对于100% 的数据n<=1000,A_i,B_i<=350 

    本题的 SPJ 对行尾多余空格敏感,各位输出答案时不要留行尾多余空格~

    _______________________________________

    比较难搞的一道贪心题目。

    这个里面用到约翰逊-贝尔曼法则。还可以有三道工序,大家可以参考http://www.managershare.com/wiki/%E7%BA%A6%E7%BF%B0%E9%80%8A-%E8%B4%9D%E5%B0%94%E6%9B%BC%E6%B3%95%E5%88%99

    _______________________________________

     1 #include<bits/stdc++.h>
     2 using namespace std;
     3 const int maxn=1010;
     4 int n;
     5 struct node
     6 {
     7     int a,b,mn,no;
     8 }sz[maxn];
     9 int px[maxn];
    10 bool cmp(node x,node y)
    11 {
    12     return x.mn<y.mn;
    13 }
    14 int main()
    15 {
    16     scanf("%d",&n);
    17     for(int i=1;i<=n;++i)scanf("%d",&sz[i].a),sz[i].no=i;
    18     for(int i=1;i<=n;++i)scanf("%d",&sz[i].b),sz[i].mn=min(sz[i].a,sz[i].b);
    19     sort(sz+1,sz+1+n,cmp);
    20     int l=0,r=n+1;
    21     int ansl=0,ansr=0;
    22     for(int i=1;i<=n;++i)
    23     {
    24         ansl+=sz[i].a;ansr+=sz[i].b;
    25         if(sz[i].mn==sz[i].a)
    26         {
    27             px[++l]=sz[i].no;
    28             if(l==1)ansr+=sz[i].a;
    29         }
    30         else 
    31         {
    32             px[--r]=sz[i].no;
    33             if(r==n)ansl+=sz[i].b;
    34         }
    35     }
    36     printf("%d
    ",max(ansl,ansr));
    37     for(int i=1;i<n;++i)printf("%d ",px[i]);
    38     printf("%d",px[n]);
    39     return 0;
    40 }
    View Code
  • 相关阅读:
    selenium测试(Java)-- 键盘事件(七)
    selenium测试(Java)--鼠标事件(六)
    selenium测试(Java)--元素操作(五)
    selenium测试(Java)--浏览器控制(四)
    selenium测试(Java)(三)
    selenium定位方法(java实例)(二)
    selenium测试环境搭建(一)
    HTML5前端(移动端网站)性能优化指南
    dede使用方法----如何调用最新文章,最热文章,友情链接
    dede使用方法---如何调用指定栏目
  • 原文地址:https://www.cnblogs.com/gryzy/p/13907556.html
Copyright © 2011-2022 走看看