华为OD题目:任务混部

2023-10-26

华为OD题目:任务混部

知识点差分Q
时间限制: 1s 空间限制: 256MB 限定语言: 不限
题目描述:
公司创新实验室正在研究如何最小化资源成本,最大化资源利用率,请你设计算法帮他们解决一个任务混部问题:
有taskNum项任务,每个任务有开始时间 (startTime ),结束时间 (endTime) ,并行度(parallelism)三个属性,并行度是指这个任务运行时将会占用的服务器数量,
一个服务器在每个时刻可以被任意任务使用但最多被一个任务占用,任务运行完会立即释放(结束时刻不占用)。
任务混部问题是指给定一批任务,让这批任务由同一批服务器承载运行,
请你计算完成这批任务混部最少需要多少服务器,从而最大化控制资源成本。

输入描述:
第一行输入为taskNum,表示有taskNum项任务
接下来taskNum行,每行三个整数,表示每个任务的开始时间(startTime),结束时间(endTime),并行度parallelism
输出描述:
一个整数,表示最少需要的服务器数量
补充说明:
1<=taskNum<=100000
0<=startTime<endTime< 50000
1<=parallelism<=100

示例1
输入:
3
2 3 1
6 9 2
0 5 1
输出:
2

说明:
共有三个任务,第一个任务在时间区间[2,3)运行,占用1个服务器,第二个任务在时间区间16.9)运行,占用2个服务器,
第三个任务在时间区间[0.5)运行,占用1个服务器,需要最多服务器的时间区间为[2.3)和[6.9),需要2个服务器

示例2
输入:
2
3 9 2
4 7 3
输出:
5
说明:
共有两个任务,第一个任务在时间区间[3.9)运行,占用2个服务器,第二个任务在时间区间[4.7)运行,占用3个服务器,需要最多服务器的时间区间为[4,7),需要5个服务器。

解题思路:

  • 差分
  • 对组装新
  • (那么了解了差分数列这个特性有什么用呢?
  • 差分数列通常用于 给一个区间所有元素 统统加上 一个增量。)
  • 参考: https://fcqian.blog.csdn.net/article/details/128976936
  • 如果不用差分,就得两层for循环,时间复杂度就是O(n^2);
  • 使用差分的话,O(n)就可以了
public class Main {
    public static void main(String[] args) {
        Scanner sc = new Scanner(System.in);
        int n = Integer.parseInt(sc.nextLine());
        //差分数组
        int[] arr = new int[50000];

        int maxTime = 0;
        List<int[]> list = new ArrayList<>();
        for (int i = 0; i < n; i++) {
            String line = sc.nextLine();
            String[] split = line.split(" ");
            int startTime = Integer.parseInt(split[0]);
            int endTime = Integer.parseInt(split[1]);
            int parallelism = Integer.parseInt(split[2]);
            //循环比较,取最大的时间
            maxTime = Math.max(endTime, maxTime);

            int[] range = {startTime, endTime, parallelism};
            //下面是给差分数组赋值
            arr[startTime] = parallelism;
            arr[endTime] = -parallelism;
        }

        int res = 0;
        int count = 0;
        //遍历,将差分数组的值累加,取最大的一个
        for (int i = 0; i <=maxTime; i++) {
            count += arr[i];
            res = Math.max(res, count);
        }
        System.out.println(res);

    }
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

华为OD题目:任务混部 的相关文章

随机推荐

  • JSON字符串转换成List对象集合

    简单说下 有一个json字符串 我想通过jackson把json字符串转换成list对象集合 网上找了很多 但都不尽人意 后来还是看jackson文档 才知道怎么做 需要的包
  • ubuntu20.04配置安装frp内网穿透

    1 frp所在的github地址 https github com fatedier frp 2 下载 wget https github com fatedier frp releases download v0 38 0 frp 0 3
  • from keras.engine.topology import Layer 无此模块问题

    这可以说是深度学习必踩坑 就是版本问题 复现别人得代码时出现得问题 一开始没发现这篇博文 在GitHub上找了一圈都没找到这个引入 还走了弯路 以为是新版本包不一样了 修改也不可行 还是见识少了 这篇博客没营养 只作踩坑记录 参考博客 Ke
  • 什么是测试开发工程师(SET)?

    经常有人问到 什么是 软件测试开发工程师 Software Engineers in Test 缩写为SET 借用Google的规范来说其实就是 在测试中的软件工程师 其工作性质上首先是测试 然后才是开发 那么这里会让大家产生一个矛盾的感觉
  • Quick - Hello World

    文章目录 背景 谈一谈为我什么学QtQuick 环境搭建 Qt 安装 VS2019 安装 Qt Visual Studio Tools Hello World pro main cpp main qml 运行效果 参考鸣谢 背景 Qt4自2
  • Mybatis和Mybatis-Plus的配置

    目录 一 springMVC中Mybatis的配置 1 添加 MyBatis 和 MyBatis Spring 的依赖 2 配置数据源 3 配置 MyBatis 4 编写 Mapper 接口和对应的 XML 文件 二 springnboot
  • 大学二年级各科的学习成绩

    快要考试了 过多三个星期就是复习周了 又得狂抓一阵子 今天打开教务处 情不自禁打开成绩列表 希望继续保持吧 分数 学分 绩点 2008 2009学年上学期 01010022 毛邓三 上 必修 94 0 3 00 13 20 01020003
  • fortran使用MKL函数库计算方阵的逆矩阵

    本篇博文简要介绍使用MKL函数库计算方阵的逆矩阵 代码如下 program MKL getrfANDgetri use lapack95 implicit none integer parameter n 3 integer i j ipi
  • Python+turtle实现一个乌龟逃跑小游戏(可以和孩子一起完成)

    直接上演示视频 这个代码也是之前当老师的时候 给孩子们写的一个小游戏 那么我们一起看一下这个小游戏是如何让完成的 1 首先完成代码的前期准备 1 这里我们t turtle Pen 海龟 表示我们操作的小海龟 2 enemy turtle P
  • Windows 下安装 Memcached

    官网上并未提供 Memcached 的 Windows 平台安装包 我们可以使用以下链接来下载 你需要根据自己的系统平台及需要的版本号点击对应的链接下载即可 32位系统 1 2 5版本 http static runoob com down
  • 【FFMPEG】AVFilter使用流程

    流程图 核心类 AVFilterGraph 于统合这整个滤波过程的结构体 AVFilter 滤波器 滤波器的实现是通过AVFilter以及位于其下的结构体 函数来维护的 AVFilterContext 个滤波器实例 即使是同 个滤波器 但是
  • Postman循环调用Post接口(Body多字段传参详细设置)

    背景 由于线上数据库 普通开发用户是无法进行增删改操作 所以如果需要调用线上的某个接口 但是又不通过界面进行操作的话 就可以通过Postman进行操作了 具体操作 新建项目 创建接口 编辑接口 单击新建的接口 输入相应的url及登录toke
  • chatgpt平替,清华chatglm本地化部署

    ChatGLM 6B 是一个开源的 支持中英双语的对话语言模型 基于 General Language Model GLM 架构 具有 62 亿参数 因为我的cpu跑不了 在linux服务器端进行部署 前提是conda已经安装并配置好 因为
  • Shell-脚本介绍

    目录 一 Shell介绍 二 Shell脚本的规则 三 比较运算符 四 Case循环语 五 If语句 分支结构 六 For循环 七 While循环 一 Shell介绍 Shell与Python都是弱语言 定义变量规则 变量名 值 Shell
  • 【华为OD机试真题】等和子数组最小和(C++&java&python)满分 详细代码注释 代码解读

    等和子数组最小和 给定一个数组nums 将元素分为若干个组 使得每组和相等 求出满足条件的所有分组中 组内元素和的最小值 输入描述 第一行输入m 接着输入m个数 表示此数组 数据范围 1 lt M lt 50 1 lt nums i lt
  • c 语言实现的简单屏幕烟花程序

    include stdlib h include graphics h include stdio h include math h include conio h define PI 3 1425926 main int gdriver
  • conda install 最常见错误的解决方案

    Conda 安装库错误 conda install pytorch 1 7 0 安装时相关错误 Collecting package metadata current repodata json failed gt gt gt gt gt
  • mac系统空间占用大解决方案

    本人mac2017 pro 120G 系统空间占用90G 一直提示空间不足 删除各种无用文件后才释放10G空间 网上搜索解决方案 弹出mackeeper mac 清理软件 广告 搜索mackeeper 发现网上骂声一片 基本上断定流氓软件
  • go语言的defer语句

    go语言defer语句的用法 参考 https www jianshu com p 5b0b36f398a2 defer的语法 defer后面必须是函数调用语句 不能是其他语句 否则编译器会出错 package main import lo
  • 华为OD题目:任务混部

    华为OD题目 任务混部 知识点差分Q 时间限制 1s 空间限制 256MB 限定语言 不限 题目描述 公司创新实验室正在研究如何最小化资源成本 最大化资源利用率 请你设计算法帮他们解决一个任务混部问题 有taskNum项任务 每个任务有开始