51nod 1205 流水线调度

来源:互联网 发布:数据恢复软件恢复率高 编辑:程序博客网 时间:2024/04/29 18:47

1205 流水线调度
基准时间限制:1 秒 空间限制:131072 KB 分值: 40 难度:4级算法题 收藏 关注
N个作业{1,2,…,n}要在由2台机器M1和M2组成的流水线上完成加工。每个作业加工的顺序都是先在M1上加工,然后在M2上加工。M1和M2加工作业i所需的时间分别为a[i]和b[i]。你可以安排每个作业的执行顺序,使得从第一个作业在机器M1上开始加工,到最后一个作业在机器M2上加工完成所需的时间最少。求这个最少的时间。
Input
第1行:1个数N,表示作业的数量。(2 <= N <= 50000)
第2 - N + 1行:每行两个数,中间用空格分隔,表示在M1和M2上加工所需的时间a[i], b[i]。(1 <= a[i], b[i] <= 10000)。
Output
输出完成所有作业所需的最少时间。
Input示例
4
3 7
2 1
1 1
4 2
Output示例
14

https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1205

Johnson算法

暑假再补充

#include <bits/stdc++.h>using namespace std;long long tag[500005];long long de[500005];struct node{    long long x,y,z;} a[500005],b[500005],d[500005],c[1000005];bool cmp(node l,node r){    return l.x<r.x;}int main(){    memset(a,0,sizeof(a));    memset(tag,0,sizeof(tag));    memset(de,0,sizeof(de));    memset(b,0,sizeof(b));    memset(c,0,sizeof(c));    memset(d,0,sizeof(d));    long long n;    while(cin>>n)    {        for(long long i=0;i<n;i++)        {            cin>>a[i].x;            a[i].y=i;            cin>>b[i].x;            b[i].y=i;            d[i].x=a[i].x;            d[i].y=b[i].x;        }        sort(a,a+n,cmp);        sort(b,b+n,cmp);        long long l=0,r=0,s=0;        while(l<n||r<n)        {            if(l<n&&(r==n||a[l].x<b[r].x))            {                c[s].y=a[l].y;                c[s].z=1;                c[s++].x=a[l].x;                l++;            }            else            {                c[s].y=b[r].y;                c[s].z=0;                c[s++].x=b[r].x;                r++;            }//cout<<l<<' '<<r<<"z"<<endl;        }        long long x=0,y=0;        l=1;r=n;        for(long long i=0;i<s;i++)        {            if(c[i].z==1&&tag[c[i].y]==0)            {                tag[c[i].y]=1;                de[l++]=c[i].y;            }            else if(tag[c[i].y]==0)            {                tag[c[i].y]=1;                de[r--]=c[i].y;            }        }        for(long long i=1;i<=n;i++)        {            x+=d[de[i]].x;            y=max(x,y);            y+=d[de[i]].y;        }        cout<<y<<endl;    }}
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 新袜子穿了很滑怎么办 鞋底硬脚底板疼怎么办 新鞋前面太硬怎么办 新鞋子鞋底太硬怎么办 不到一米八的身高想扣篮怎么办 鞋胶粘在鞋面上怎么办 鞋子上沾了胶怎么办 休闲鞋号码大了半码怎么办 高跟鞋大了一码怎么办 浅口单鞋买大了怎么办 新鞋子磨大脚趾怎么办 鞋前面磨大脚趾怎么办 白鞋子蹭黑了怎么办 夏天穿皮鞋捂脚怎么办 耐克赤足掉漆怎么办 鞋子买回来小了怎么办 布鞋大了一码怎么办 鞋子买小了一码怎么办 运动鞋小了一码怎么办 帆布鞋小了一码怎么办 脚踝骨韧带断了怎么办 咖啡喝多了失眠怎么办 奥迪q7电瓶没电怎么办 一岁宝宝坐不稳怎么办 2岁宝宝不肯把尿怎么办 踢足球上肢和下肢不协调怎么办 ppt文字放映时重叠怎么办 月子8天腰背疼怎么办 生完五天腰背疼怎么办 生完孩子腰不好怎么办 养了个白眼狼怎么办 孩子学东西很慢怎么办 手不小心碰肿了怎么办 腿中间摩擦的疼怎么办 晚上睡觉时双腿酸胀怎么办 腿擦破皮了怎么办 快速好 宝宝腿擦破皮了怎么办 新生儿睡觉腿喜欢弯曲怎么办 孩子八个月交叉走路怎么办 胫椎引起双腿发热怎么办 婴儿头型睡扁了怎么办