zoukankan      html  css  js  c++  java
  • 【3-1】独立任务最优调度问题

    ´问题描述:
    用 2 台处理机 A 和 B 处理 n 个作业。设第 i 个作业交给机器 A 处理时需要时间 i
    a ,若
    由机器 B 来处理,则需要时间 i
    b 。由于各作业的特点和机器的性能关系,很可能对于某些 i,
    有 i i
    a ³ b ,而对于某些 j,j≠i,有a j < bj 。既不能将一个作业分开由 2 台机器处理,也
    没有一台机器能同时处理 2 个作业。设计一个动态规划算法,使得这 2 台机器处理完这 n
    个作业的时间最短(从任何一台机器开工到最后一台机器停工的总时间)。研究一个实例:
    (a1,a2,a3,a4,a5,a6)=(2,5,7,10,5,2);(b1,b2,b3,b4,b5,b6)=(3,8,4,11,3,4)。
    ´编程任务:
    对于给定的 2 台处理机 A 和 B 处理 n 个作业,找出一个最优调度方案,使 2 台机器处理
    完这 n 个作业的时间最短。
    ´数据输入:
    由文件 input.txt 提供输入数据。文件的第 1 行是 1 个正整数 n, 表示要处理 n 个作业。
    接下来的 2 行中,每行有 n 个正整数,分别表示处理机 A 和 B 处理第 i 个作业需要的处理时
    间。
    ´结果输出:
    程序运行结束时,将计算出的最短处理时间输出到文件 output.txt 中。
    输入文件示例 输出文件示例
    input.txt output.txt
    6
    2 5 7 10 5 2
    3 8 4 11 3 4
    15

    【题解】

    设f[i][j]表示前i个作业A机器用了j时间的条件下B最少花费的时间 f[i][j] = min(f[i-1][j-a[i]],f[i-1][j]+b[i]);//给A做或给B做

    【代码】

    /*
        设f[i][j]表示前i个作业A机器用了j时间的条件下B最少花费的时间
        f[i][j] = min(f[i-1][j-a[i]],f[i-1][j]+b[i]);//给A做或给B做
    */
    #include <cstdio>
    #include <cstring>
    #include <algorithm>
    using namespace std;
    
    const int N = 200;
    const int M = 1e4;
    
    int f[N+10][M+10];
    int n,a[N+10],b[N+10];
    
    int main(){
    
        freopen("C://Users//Administrator//Desktop//测试数据//ch3//prog31//test//sched10.in","r",stdin);
        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]);
        memset(f,0x3f3f3f3f,sizeof f);
        f[0][0] = 0;
        for (int i = 1;i <= n;i++)
            for (int j = 0;j <= M;j++){
                if (j>=a[i]) f[i][j] = min(f[i][j],f[i-1][j-a[i]]);
                f[i][j] = min(f[i][j],f[i-1][j]+b[i]);
            }
        int ans = f[n][0];
        for (int j = 1;j <= M;j++) ans = min(ans,max(f[n][j],j));
        printf("%d
    ",ans);
        return 0;
    }
    
    
  • 相关阅读:
    ActiveSync合作关系对话框的配置
    WINCE对象存储区(object store)
    Wince 隐藏TASKBAR的方法
    Wince输入法换肤换语言机制
    poj 3080 Blue Jeans 解题报告
    codeforces A. Vasily the Bear and Triangle 解题报告
    hdu 1050 Moving Tables 解题报告
    hdu 1113 Word Amalgamation 解题报告
    codeforces A. IQ Test 解题报告
    poj 1007 DNA Sorting 解题报告
  • 原文地址:https://www.cnblogs.com/AWCXV/p/11660111.html
Copyright © 2011-2022 走看看