suseoj 1209: 独立任务最优调度问题(动态规划)

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、最后再遍历时间线上的值,找出耗时最短的走法

核心代码:
  
 1 for(int i = 0; i < n; ++ i)
 2 {
 3     for(int j = my_max; j >= 0; -- j)
 4     {
 5         if (j > A[i])
 6             dp[j] = min(dp[j-A[i]], dp[j] + B[i]);
 7         else 
 8             dp[j] += A[i];
 9     }
10 }

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

 1 #include <iostream>
 2 #include <algorithm>
 3 #include <cstring>
 4 #include <cstdio>
 5 #include <cmath>
 6 #include <stack>
 7 #include <map>
 8 #include <queue>
 9 #include <climits>
10 
11 using namespace std;
12 const int MAX = 1e6 + 10;
13 const int MY_MAX = 2e2 + 10;
14 int A[MY_MAX], B[MY_MAX], dp[MAX], n, ans = INT_MAX, my_sum = 0;
15 
16 int main()
17 {
18     scanf("%d", &n);
19     for (int i = 0; i < n; ++ i)
20         scanf("%d", &A[i]),
21         my_sum += A[i];
22     for (int i = 0; i < n; ++ i)
23         scanf("%d", &B[i]);
24 
25     for(int i = 0; i < n; ++ i)
26     {
27         for (int j = my_sum; j >= 0; -- j)
28         {
29             if (j > A[i])
30                 dp[j] = min(dp[j-A[i]], dp[j] + B[i]);
31             else
32                 dp[j] += A[i];
33         }
34     }
35     for (int i = 0; i <= my_sum; ++ i)
36     {
37         int temp = max(dp[i], i);
38         ans = min(ans, temp);
39     }
40     printf("%d\n", ans);
41     return 0;
42 }

 

转载于:https://www.cnblogs.com/GetcharZp/p/9157688.html

Workbench下列车转向架随机振动疲劳分析 结果中添加功率谱响应工具(Response PSD Tool),可以查看几何体以及远程点上的功率谱密度,如下图11所示,这里查看几何体上某一硬点的加速度功率谱密度响应曲线,如下图12所示。结果中添加疲劳工具(Fatigue Tool),查看列车转向架的疲劳寿命情况,这里采用窄带的寿命假设理论,曝光时间为1s指明计算出的疲劳寿命的基本单位是秒,寿命结果如下图14所示,可以看到最大寿命为1e35s,最小寿命为2.3542e18s,注意单位制,可再次基础上将其转换为小时或天。频域上的统计计算,软件很快计算完成。 阅读详情

相关推荐

从零构建:如何用MATLAB和SDR硬件搭建你的第一个OFDM卫星通信原型系统

本文详细介绍了如何利用MATLAB和SDR硬件从零构建OFDM卫星通信原型系统。通过核心组件选型、开发环境配置、OFDM算法实现到系统集成与优化的完整流程,帮助通信工程学生和DIY爱好者快速掌握软件无线电技术在卫星通信中的应用。特别推荐使用HackRF One和MATLAB工具箱实现高性价比的OFDM系统验证。

pz890123456的博客 378

【算法】独立任务最优调度问题

动态规划 独立任务最优调度问题详解 问题描述 用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

weixin_45618073的博客 8894

FreeSWITCH编译安装详细文档

本文档详细介绍了在Ubuntu 22.04系统上从源码编译安装FreeSWITCH的完整流程。主要内容包括:1)系统环境准备和依赖库安装;2)关键依赖库spandsp和sofia-sip的编译安装;3)FreeSWITCH源码的特定版本(v1.6.0)编译配置,包括禁用SignalWire模块的配置方法;4)系统服务配置,包括创建专用用户、设置权限以及配置systemd服务文件。文档特别提供了版本控制说明,确保后期能切换到相同的版本环境,并附有详细的命令操作步骤和注意事项。

唯有代码让我痴狂 1369

算法动态规划

动态规划题目的基本思路: 1.寻找dp数组下标及其含义; 2.根据题目找出递归公式; 3.初始化dp数组(有的题目初始化都为1,有的都为0,根据题目初始化); 4.遍历数组(例如,dp[i][j]看是先遍历i还是先遍历j); 5.打印dp数组。

2301_80168220的博客 2150

告别‘火龙’:实测BES2800/RK2108等主流芯片,聊聊AI眼镜的功耗与散热‘内卷’实战

本文深入探讨了AI智能眼镜在功耗与散热方面的挑战,重点分析了恒玄BES2800和瑞芯微RK2108等主控芯片的能效表现。通过实测数据和优化策略,揭示了在6nm工艺、异构计算和系统级散热方案下的实战经验,为AI眼镜的功耗管理提供了实用解决方案。

weixin_30839881的博客 946

ArcGIS-裁剪遥感影像及dem图像

6、选择【工具箱】-【数据管理工具】-【栅格】-【裁剪】。在【输入栅格】里选择要裁剪的dem,在【输出范围】里选择刚创建的裁剪范围。选择一个输出路径,其他参数保存默认。2、起一个名称,要素类型选择【面】。点击【编辑】选择与要裁剪的dem一致的地理坐标系。1、创建需要裁剪区域的面层shp,右击选择【新建】-【shapefile】3、点击编辑器,选择开始编辑。4、选择【裁剪范围】,点击确定。5、画出想要裁剪的范围并保存。

siwenaiyou的博客 1万+

算法分析与设计实验报告——独立任务最优调度问题

算法分析与设计实验报告——独立任务最优调度问题 目录:算法分析与设计实验报告——独立任务最优调度问题一、 实验目的二、实验要求三、 实验原理四、 实验过程(步骤)五、 运行结果六、实验分析与讨论七、实验特色与心得附件一 实验过程(步骤)附件二 运行结果 一、 实验目的 掌握动态规划的基本思想和解决问题的基本步骤,认识动态规划和分治法的联系与区别,对比解决同一问题的两种算法设计策略的时间复杂性。 二、实验要求 用c++语言实现用动态规划算法解决独立任务最优调度问题,分析时间复杂性,体会动态规划算法解决问题的

千色千寻的博客 2878

告别时钟树平衡噩梦:在Innovus中巧妙设置stop/ignore pin来优化分段时钟网络

本文深入探讨了在Innovus工具中利用stop/ignore pin优化分段时钟树网络的高阶技巧。针对数字IC后端设计中的时钟树平衡难题,详细解析了特殊引脚属性的战略应用场景和配置方法,帮助工程师有效解决SoC设计中复杂的时钟结构问题,显著提升时序收敛效率。

weixin_30836759的博客 289

独立任务的最优调度问题(动态规划)

关于独立任务的最优调度问题,搞懂本质会瞬间理解,建立动手画图理解

m0_62478418的博客 4014

RTX4090上跑CenterNet训练

参考实现 url=https://github.com/xingyizhou/CenterNet.git commit_id=5b1a490a52da57d3580e80b8bb4bbead9ef2af96

遗失的神庙 1622

Unity FPS射击控制系统:数据驱动的武器行为解耦方案

在Unity第一人称射击(FPS)开发中,射击系统常因输入、状态、行为耦合导致连发异常、换弹冲突与网络同步失准。其本质是缺乏对‘武器行为’(如后坐力曲线、弹药逻辑)与‘射击控制’(如输入合法性校验、冷却调度)的正交分离。本方案基于ScriptableObject实现WeaponData数据资产化,配合ShootingController状态机服务,达成输入解耦、运行时参数可调、协程受控、网络预测友好等工程目标。适用于中大型FPS项目架构升级与数据驱动转型,尤其解决Unity InputSystem与物理反馈

weixin_30536861的博客 609

OJ P1178 最佳调度

这题交了6遍。。。想法:首先想到了是贪心。但很多反例。然后准备用搜索,但这次搜索需要剪枝,所以还得保留贪心得到的较优解,使得凡比较优解还大的解直接pass掉,这样就很能节省时间了。#include#include#include#include#include#include#includeusing namespace std;int n,k;int an[71],ak[71];//an存每个工

364

全志F1C100S/F1C200S学习笔记(1)——基础简介及资料

资料: 荔枝派资料下载站 荔枝派github 荔枝派中文论坛 荔枝派DIY-github资料 荔枝派Nano 全流程指南 芒果派 坑网

丨晋丨 1万+

最佳调度问题(SSOJ-2367)

Problem Description 假设有n个任务由k个可并行工作的机器完成。完成任务i需要的时间为ti。 试设计一个算法找出完成这n个任务的最佳调度,使得完成全部任务的时间最早。 Input 第一行有2个正整数n和k(1≤n≤20,1≤k≤6); 第二行的n个正整数是完成n个任务需要的时间ti(1≤ti≤100)。 Output 1行1个数:完成全部任务的最早时间。 Sam...

Alex_McAvoy的博客 2844

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

C# WinForm 基于DirectShow.dll编写的程序,可边预览边保存视频,音频和图片

基于微软的DirectShow.dll的二次开发1.自动识别连接的摄像头跟麦克风且可以对其进行选择(默认选中第一个)2.可录制wmv和avi两种格式的视频并且都带有音频,avi可以录制的分辨率和帧数进行选择,wmv默认进行了淸晰度优化如不喜欢可去除代码中有相关提示3.可在预览点开之后进行拍照,也可边录制视频边拍照4.添加了视频和音频的压缩功能(酌情使用)这次二次开发发现C#对DirectShow的相关信息太少,这次做完也不敢藏私共享出来,还望大家指正

OJ算法分析题库(2)

算法分析: 算法大致的思路就是通过四个数组分别存储每次输入的数值内容。然后通过分组循环,四个数分两组,a和b一组进行一对多依次加法存到数组中,保证每个a组的数都和b组中的所有数进行过了加法运算。c和d也是一样的方式。 两个数组ab和cd运算完毕以后,进行排序。排序完成以后接下来通过对ab数组的值进行依次循环,然后每次都会cd数组也进行循环判断,找到ab+cd=0的情况的个数。为了应对数值相同的情况,这里用到了upper_bound和lower_bound两个函数进行运算,具体原理读者可以自行分析....

weixin_51339377的博客 3019

VC中sqlite的使用

在VC中对sqlite的使用,实现数据库大批数据的快速插入,读取数据库中的数据在ListCtrl中显示

Nwafu-OJ-1406 Problem E C语言实习题一——5.数据类型长度测试

问题 E: C语言实习题一——5.数据类型长度测试 时间限制: 1 Sec 内存限制: 128 MB 提交: 3962 解决: 2132 [提交][状态][讨论版] 题目描述 编写程序,测试所使用的计算机系统字符型、短整型、整形、长整型、单精度实型、双精度实型所占有的字节数量。 输入 无 输出 计算机系统字符型、短整型、整形、长整型、单精度实型、双精度实型所占有的字节数量。 样例输入 无 样例输出 size of char=1 size of short=2 size of int=4 size of

qq_53436105的博客 935

问题 D: 【例题4】佳佳的Fibonacci

问题 D: 【例题4】佳佳的Fibonacci 时间限制:1 Sec内存限制:128 MB提交:5解决:4 [提交][状态][讨论版][命题人:quanxing][Edit] [TestData] 题目链接:http://acm.ocrosoft.com/problem.php?cid=1704&pid=3 题目描述 佳佳对数学,尤其数列十分感兴趣,在研究Fibon...

AlanJobs的博客 1198

独立任务最优调度问题

问题:独立任务最优调度,又称双机调度问题:用两台处理机A和B处理n个作业。设第i个作业交给机器A处理时所需要的时间是a[i],若由机器B来处理,则所需要的时间是b[i]。现在要求每个作业只能由一台机器处理,每台机器都不能同时处理两个作业。设计一个动态规划算法,使得这两台机器处理完这n个作业的时间最短(从任何一台机器开工到最后一台机器停工的总的时间)。研究一个实例:n=6, a = {2, 5, 7

求知若饥,知行合一 3545

动态规划——独立任务最优调度问题

3-1:独立任务最优调度问题 一、需求分析 问题描述:用2台处理机A和B处理n个作业。设第i个作业交给机器A处理时需要时间ai,若由机器B来处理,则需要时间bi。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai>bi,而对于某些j,j≠i,有aj>bj。既不能将一个作业分开由2台机器处理,也没有一台机器能同时处理2个作业。设计一个动态规划算法,使得这2台机器处理完这n个作业的...

Xiongcanne的博客 5741

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

题目链接 题目描述 用2 台处理机A 和B 处理n 个作业。设第i 个作业交给机器A 处理时需要时间i a ,若由机器B 来处理,则需要时间i b 。由于各作业的特点和机器的性能关系,很可能对于某些i,有ai>=bi,而对于某些j,j≠i,有aj< bj。既不能将一个作业分开由2 台机器处理,也没有一台机器能同时处理2 个作业。设计一个动态规划算法,使得这2 台机器处理完...

weixin_30569033的博客 818
上一篇: 四级词汇(二)
下一篇: suseoj 1210: 会场安排问题 (贪心)
devon2014
博客等级 码龄12年 3粉丝 144原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值