算法设计与分析 SCAU10346 带价值的作业安排问题

news2024/11/17 7:46:08

10346 带价值的作业安排问题

时间限制:1000MS 代码长度限制:10KB
提交次数:25 通过次数:9

题型: 编程题 语言: G++;GCC;VC;JAVA
在这里插入图片描述


Description

已知n项作业E={1, 2, … ,n} 需要完成,只有一台机器,同一时刻至多完成一个作业,
而且每项作业需要的时间都是单位时间1。第k项作业要求在时间fk时刻执行并完成,而且
完成这项作业将获得效益pk,(k=1, 2, … , n)。

E的子集称为相容的,如果它们可以被安排由一台机器完成。

带限期和价值的作业安排问题就是:要在所给的作业集合中选出总效益值最大的相容子集,
请输出最大的总效益值。


输入格式

输入3行:
第一行,一个数n,表示n个作业(n<10000)。
第二行,n个正数,表示这n个作业的应执行的时间点。
第三行,n个正数,表示这n个作业的效益值。


输出格式

输出:相容作业子集所获得的最大总效益。

例如:7个作业
时间点和效益值分别是:
1 8 8 5 9 3 5
20 25 30 7 18 10 18
则:可以获得的最大总效益为:20 + 30 + 18 + 10 + 18 = 96


输入样例

7
1 8 8 5 9 3 5
20 25 30 7 18 10 18


输出样例

96


解题思路

贪心算法

这题较简单,求总效益值最大的相容子集,即把重复的元素集合中效应较小的给去除即可。


算法思路

  1. 初始化三个数组,time 一个记录各时间节点,val 记录各节点效应,all 用于打表,记录相应时间节点(下标)是否有效应
  2. 如果 all 数组该时间节点值为0,说明该时间节点第一次记录效应,直接加入即可
  3. 如果 all 数组该时间节点值不为0,说明该时间节点不是第一次记录效应,即需要去重,条件是如果新来的效应如果较大,就代替原本的,否则保持原来的效应不变
  4. 在进行上面循环遍历的同时记录总效应 sum 即可



更多注释可查看下方的完整代码中,有助于理解。

代码如下

#include <iostream>
#include <string.h>

using namespace std;

int main()
{
    int time[10001]; // 记录各时间节点
    int val[10001]; // 记录各节点效应
    int all[10001]; // 打表,记录相应下标是否有效应

    memset(all, 0,sizeof(all));

    int i, n, nowTime, res = 0;
    cin >> n;


    for(i = 1; i <= n; i++) {
        cin >> time[i];
    }

    for(i = 1; i <= n; i++) {
        cin >> val[i];
    }

    for(i = 1; i <= n; i++) {
        nowTime = time[i]; // 当前时间节点
        // 首次记录该时间的效应,直接加入即可
        if(all[nowTime] == 0) {
            all[nowTime] = val[i];
            res += all[nowTime];
        } else {
            // 再次记录该时间的效应,应判断是否比原本的大,大才加入
            if(val[i] > all[nowTime]) {
                res -= all[nowTime]; // 把原来的减掉后,后面再加上即更新成最新的效应
                all[nowTime] = val[i];
                res += all[nowTime];
            }
        }

    }

    cout << res << endl;
    return 0;
}


最后

对我感兴趣的小伙伴可查看以下链接

  • 我的掘金主页:https://juejin.cn/user/1302297507801358
  • 博客主页:http://blog.zhangjiancong.top/
  • 公众号:Smooth前端成长记录

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/22698.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Msyql数据库入门基础教学

目录 文章目录二、数据库三、为什么要使用数据库&#xff1f;四、 数据库相关的概念⑤SQL语句操作修改表insert基本使用update语句delete语句二、数据库 数据库的种类有许多&#xff0c;企业中常用的有MySQL、Oracle&#xff0c;其中MySQL使用最多&#xff0c;是因为他开源免费…

和外国bi相比,国产bi软件更适合中国企业

提起国外bi和国产bi软件之争&#xff0c;经常有人说国外bi软件起步更早&#xff0c;经验更丰富&#xff0c;功能更强大。无可否认国外bi软件发展起步早&#xff0c;也确实功能强大&#xff0c;但当他们来到中国却往往会面临着本土化难题&#xff0c;经常出现水土不服现象&#…

【Hack The Box】linux练习-- Jarvis

HTB 学习笔记 【Hack The Box】linux练习-- Jarvis &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f3…

基于docker-k8s的web集群

目录 网络拓扑图 基于docker-k8s的web集群搭建 项目描述 详细步骤 1、集群ip地址的规划 2、Ansible批量部署服务器 3、创建k8s集群 4、配置NFS服务 5、pv&#xff0c;pvc&#xff0c;与NFS融合 6、配置Nginx负载均衡 网络拓扑图 基于docker-k8s的web集群搭建 项目描述…

web前端期末大作业基于html+css+javascript+jquery制作家乡主题风景网页设计与实现——张家口

家乡旅游景点网页作业制作 网页代码运用了DIV盒子的使用方法&#xff0c;如盒子的嵌套、浮动、margin、border、background等属性的使用&#xff0c;外部大盒子设定居中&#xff0c;内部左中右布局&#xff0c;下方横向浮动排列&#xff0c;大学学习的前端知识点和布局方式都有…

【Hack The Box】Linux练习-- Popcorn

HTB 学习笔记 【Hack The Box】Linux练习-- Popcorn &#x1f525;系列专栏&#xff1a;Hack The Box &#x1f389;欢迎关注&#x1f50e;点赞&#x1f44d;收藏⭐️留言&#x1f4dd; &#x1f4c6;首发时间&#xff1a;&#x1f334;2022年11月17日&#x1f334; &#x1f…

java项目-第156期ssm贝儿幼儿教育管理系统-java毕业设计_计算机毕业设计

java项目-第156期ssm贝儿幼儿教育管理系统-java毕业设计_计算机毕业设计 【源码请到资源专栏下载】 今天分享的项目是《ssm贝儿幼儿教育管理系统》 该项目分为2个角色&#xff0c;管理员、用户。 用户可以浏览前台,包含功能有&#xff1a; 首页、幼儿园信息、活动信息、就餐信息…

CAS号:1676104-79-2

所有细胞渗透性肽C(Npys) rrrrrrr - nh₂的d模拟物。 编号: 129180中文名称: H-Cys(NPys)-D-Arg-D-Arg-D-Arg-D-Arg-D-Arg-D-Arg-D-CAS号: 1676104-79-2单字母: H2N-C(Npys)-DArg-DArg-DArg-DArg-DArg-DArg-DArg-DArg-DArg-NH2三字母: H2N-Cys(Npys)-DArg-DArg-DArg-DArg-DArg-…

Kotlin 开发Android app(八):Kotlin类对象class

只要是面向对象的编程语言&#xff0c;基本上都有类Class的用法&#xff0c;只是好不好用&#xff0c;好不好记而已&#xff0c;面向对象是c开始引入的&#xff0c;但是c 关于类的东西&#xff0c;弄的太复杂&#xff0c;其实在真正的项目中&#xff0c;很少用到非常多复杂的概…

论文阅读:Practical Deep Raw Image Denoising on Mobile Devices

论文阅读&#xff1a; Practical Deep Raw Image Denoising on Mobile Devices 旷视 2020 ECCV 基于深度学习的降噪方法在近几年得到了大量的研究&#xff0c;这些方法的效果也霸榜了很多公开的数据集。不过这些方法用到的网络模型都很大&#xff0c;无法在手机端侧运行。这篇…

安装 DolphinDB Python API

1. 下载 whl 包 根据 CPU 架构、操作系统&#xff0c;从官方网站 pypi.org 下载对应的 Python API 安装包。 对应 x86_64, Python3.8 的包&#xff1a; 下载链接 2. pip 离线安装 pip install dolphindb-1.30.19.2-cp38-cp38-manylinux2010_x86_64.whl 3. 验证安装是否成…

数理天地杂志数理天地杂志社数理天地编辑部2022年第20期目录

数学基础精讲《数理天地》投稿&#xff1a;cn7kantougao163.com 函数定义域求法分析探讨 刘志勇; 2-3 不等式证明之极值点偏移问题探究 鲁媛媛; 4-5 利用导数突破函数的图象问题 王法金; 6-7 导数求解函数单调性的类型及分析 陈泓; 8-9 关注解三角形的一个常考…

JDK下载安装及环境配置

一、文章导读 随着互联网的日益发展, 越来越多的小伙伴加入了程序员这个行列, 也有很多小伙伴正计划学习编程, 学习Java 那么对于新手来说, 第一件事就是下载安装Java开发工具包, 也就是JDK, 今天我们就来一起详细的说说怎么操作 二、JDK版本描述 学习环境中, 我们通常…

诊所要使用微信预约系统,需准备哪些资料?

许多诊所想在自己的微信公众号里&#xff0c;做一个预约挂号的功能&#xff0c;但无论是做公众号预约系统&#xff0c;还是预约小程序&#xff0c;都需要具备以下几类资料&#xff1a; 营业执照 诊所为患者提供线上预约挂号功能&#xff0c;需要借助于微信企业服务号或者小程序…

什么是CRM系统?为什么现代企业都在使用?

如今市场竞争日益激烈&#xff0c;不少企业管理者通过各种方式&#xff0c;试图寻找一个合适并有效的解决方案&#xff0c;以此来帮助他们解决企业管理各种难题&#xff0c;让企业业绩不断提高&#xff0c;获得持续的成功。 而企业管理软件的出现填补了企业管理领域的空缺。从…

clickhouse 多维分析函数

前言 clickhouse的强大之处在于充分利用内存计算的高效性从而快速得到计算结果&#xff0c;尤其是对于一些需要做聚合分析、统计等场景下&#xff0c;clickhouse提供了一些按维度分析的函数&#xff0c;本文将介绍clickhouse常用的几类多维分析函数。 groupby函数 还记得在mys…

深入理解 Hive UDAF

1. 概述 用户自定义聚合函数(UDAF)支持用户自行开发聚合函数完成业务逻辑。从实现上来看 Hive 有两种创建 UDAF 的方式,第一种是 Simple 方式,第二种是 Generic 方式。 1.1 简单 UDAF 第一种方式是 Simple(简单) 方式,即继承 org.apache.hadoop.hive.ql.exec.UDAF 类,并…

[附源码]java毕业设计线上图书销售管理系统

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; SSM mybatis Maven Vue 等等组成&#xff0c;B/S模式 M…

R语言绘制柱形图系列

#EasyCharts团队出品&#xff0c; #如有问题修正与深入学习&#xff0c;可联系微信&#xff1a;EasyChartslibrary(ggplot2) #---------------------------单数剧系列柱形图----------------------------------------------------mydata<-data.frame(Cutc("Fair",…

2021年全国研究生数学建模竞赛华为杯A题相关矩阵组的低复杂度计算和存储建模求解全过程文档及程序

2021年全国研究生数学建模竞赛华为杯 A题 相关矩阵组的低复杂度计算和存储建模 原题再现&#xff1a; 一、问题背景   计算机视觉、相控阵雷达、声呐、射电天文、无线通信等领域的信号通常呈现为矩阵的形式&#xff0c;这一系列的矩阵间通常在某些维度存在一定的关联性&…