1209: 独立任务最优调度问题

时间限制: 1 Sec  内存限制: 128 MB
提交: 3  解决: 2
[提交][状态][讨论版][命题人:liyuansong]

题目描述

用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai≥bi,而对于某些j,j≠i,有aj<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个作业的时间最短。

输入

第1行是1个正整数n,表示要处理n个作业。在接下来的2行中,每行有n个正整数,分别表示处理机A和B处理第i个作业需要的处理时间。

输出

程序运行结束时,将计算出的最短处理时间输出。

样例输入

6
2 5 7 10 5 2
3 8 4 11 3 4

样例输出

15

分析:
  1、我们可以先确定一个基础的处理机(即就是所有作业都用这个处理机处理)
  2、遍历所有的作业
  3、遍历第一步得到的基础时间,得出对应时间的作业最优处理机制
    状态方程:dp[j] = min(dp[j-A[i]], dp[j] + B[i]);
    说明:dp[j-A[i]] ==> 表示在j时间段之内执行使用A处理机处理i问题
       dp[j] + B[i] ==> 表示第i个问题由B处理机来处理
  4、最后再遍历时间线上的值,找出耗时最短的走法 核心代码:
  
 for(int i = ; i < n; ++ i)
{
for(int j = my_max; j >= ; -- j)
{
if (j > A[i])
dp[j] = min(dp[j-A[i]], dp[j] + B[i]);
else
dp[j] += A[i];
}
}

C/C++代码实现(AC):

 #include <iostream>
#include <algorithm>
#include <cstring>
#include <cstdio>
#include <cmath>
#include <stack>
#include <map>
#include <queue>
#include <climits> using namespace std;
const int MAX = 1e6 + ;
const int MY_MAX = 2e2 + ;
int A[MY_MAX], B[MY_MAX], dp[MAX], n, ans = INT_MAX, my_sum = ; int main()
{
scanf("%d", &n);
for (int i = ; i < n; ++ i)
scanf("%d", &A[i]),
my_sum += A[i];
for (int i = ; i < n; ++ i)
scanf("%d", &B[i]); for(int i = ; i < n; ++ i)
{
for (int j = my_sum; j >= ; -- j)
{
if (j > A[i])
dp[j] = min(dp[j-A[i]], dp[j] + B[i]);
else
dp[j] += A[i];
}
}
for (int i = ; i <= my_sum; ++ i)
{
int temp = max(dp[i], i);
ans = min(ans, temp);
}
printf("%d\n", ans);
return ;
}

suseoj 1209: 独立任务最优调度问题(动态规划)的更多相关文章

  1. 动态规划——独立任务最优调度(Independent Task Scheduling)

    题目链接 题目描述 用2 台处理机A 和B 处理n 个作业.设第i 个作业交给机器A 处理时需要时间i a ,若由机器B 来处理,则需要时间i b .由于各作业的特点和机器的性能关系,很可能对于某些i ...

  2. 背包的第k优解[动态规划]

    From easthong ☆背包的第k优解                 描述 Description     DD 和好朋友们要去爬山啦!他们一共有 K 个人,每个人都会背一个包.这些包的容量是 ...

  3. 冲刺Noip2017模拟赛3 解题报告——五十岚芒果酱

    题1  素数 [问题描述] 给定一个正整数N,询问1到N中有多少个素数. [输入格式]primenum.in 一个正整数N. [输出格式]primenum.out 一个数Ans,表示1到N中有多少个素 ...

  4. 【动态规划】流水作业调度问题与Johnson法则

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

  5. dp入门——由分杆问题认识动态规划

    简介 如果你常刷leetcode,会发现许多问题带有Dynamic Programming的标签.事实上带有dp标签的题目有115道,大部分为中等和难题,占所有题目的12.8%(2018年9月),是占 ...

  6. LeetCode 笔记系列 20 Interleaving String [动态规划的抽象]

    题目: Given s1, s2, s3, find whether s3 is formed by the interleaving of s1 and s2. For example,Given: ...

  7. 独立IP与共享IP的区别

    做网站选择独立IP还是共享IP,相信很多站长都在此纠结过,自己不使用服务器的时候从来没有关心过独立IP和共享IP的究竟有什么具体的差别.但当自己真正用到的时候,才发现:同样都是 IP,差别不是一般的大 ...

  8. [leetcode] 72. 编辑距离(二维动态规划)

    72. 编辑距离 再次验证leetcode的评判机有问题啊!同样的代码,第一次提交超时,第二次提交就通过了! 此题用动态规划解决. 这题一开始还真难到我了,琢磨半天没有思路.于是乎去了网上喵了下题解看 ...

  9. 开始奇妙的DP之旅

    铭记各位大佬教导,开始看一些很迷的动态规划,那就从比较典型的01背包开始吧,想想还是从比较简单的导弹拦截开始吧,说简单都是骗人的,还是看采药吧. 一.动态规划 刚听到动态规划这个东西,据HLT大佬所言 ...

随机推荐

  1. 4.Linux文件管理相关命令(上)

    1.复制命令cp cp - copy files and directories 拷贝 文件 和 目录 -r 递归复制,通常用来复制目录 -p 保持复制源文件的属性 -v 显示复制的过程 1. 将当前 ...

  2. oracle中创建用户、角色、权限简单使用

    Oracle关于用户.权限.角色简单使用 创建数据库用户(在system用户下)create user 用户名 identified by 密码; 授权grant 权限名 to 用户名; 查看当前用户 ...

  3. Bugku SQL注入2的思考

    网络安全初学者,欢迎评论交流学习,若内容中有错误欢迎各位指正. 题目地址:http://123.206.87.240:8007/web2/ 题目提示:都过滤了绝望吗?,提示 !,!=,=,+,-,^, ...

  4. Spring Cloud 网关服务 zuul 三 动态路由

    zuul动态路由 网关服务是流量的唯一入口.不能随便停服务.所以动态路由就显得尤为必要. 数据库动态路由基于事件刷新机制热修改zuul的路由属性. DiscoveryClientRouteLocato ...

  5. java编写基于netty的RPC框架

    一 简单概念 RPC:(Remote Procedure Call),远程调用过程,是通过网络调用远程计算机的进程中某个方法,从而获取到想要的数据,过程如同调用本地的方法一样. 阻塞IO:当阻塞I/O ...

  6. Sublime Text 3 安装 Package Control 结果返回 275309,找不到 Install Package

    打开 Preferences->Settings , 查看 ignored-packages 数组中是否有 Package Control,如果有,删除即可.

  7. unity单例封装

    # 1.前言本篇主要针对Unity单例模式,完成一个可以重复继承使用的抽象类,减少重复的工作与代码.同时,对存在的多种单例进行优劣分析.# 2.Unity单例问题分析## 2.1 单例原则单例要满足以 ...

  8. (二)与animation播放对比

    animation播放动画 1.播放默认动画 直接将动画拖入动画对象animation组件的animation变量中,然后加入如下代码既可以播放(此处采用toggle控制动画的播放) public A ...

  9. django-模板之URL标签(五)

    book/views.py from django.shortcuts import render def index(request): return render(request,"in ...

  10. Cannot read property 'forEach' of undefined

    在singer-detail组件中,有一个_normalizeSongs()方法,遍历数组 _normalizeSongs(list) { let ret = []; list.forEach(ite ...