华为OD机试真题 Java 实现【核酸检测人员安排】【2023Q1 100分】

news/2024/7/20 16:15:32 标签: 华为od, java, 动态规划

在这里插入图片描述

一、题目描述

在系统、网络均正常的情况下组织核酸采样员和志愿者对人群进行核酸检测筛查。

每名采样员的效率不同,采样效率为N人/小时。

由于外界变化,采样员的效率会以M人/小时为粒度发生变化,M为采样效率浮动粒度,M = N * 10%,输入保证N * 10%的结果为整数。

采样员效率浮动规则:

采样员需要一名志愿者协助组织才能发挥正常水平,在此基础上,每增加一名志愿者,效率提升1M,最多提升3M;
如果没有志愿者协助组织,效率下降2M。

怎么安排速度最快?求总最快检测效率(总检测效率为各采样人员效率值相加)。

二、输入描述

第一行:第一个值,采样员人数,取值范围[1,100];第二个值,志愿者人数,取值范围[1,500]。

第二行:各采样员基准效率值(单位人/小时),取值范围[60,600],保证序列中每项值计算10%为整数。

三、输出描述

总最快检测效率(单位人/小时)。

四、补充说明

输入需要保证采样员基准效率值序列的每个值 * 10%为整数。

五、Java算法源码

java">public static void main(String[] args) {
    Scanner sc = new Scanner(System.in);
    String str = sc.nextLine();
    String[] strings = str.split(" ");

    //采集人员人数
    int m = Integer.parseInt(strings[0]);
    //志愿者人数
    int n = Integer.parseInt(strings[1]);

    // 各采样员基准效率值
    int[] efficiencyArr = Arrays.stream(sc.nextLine().split(" ")).mapToInt(Integer::parseInt).toArray();

    //动态规划的方程
    int[][] dp = new int[m + 1][n + 1];

    for (int i = 1; i <= m; i++) {
        for (int j = 0; j <= n; j++) {
            //当前采集人员的效率
            int curEff = efficiencyArr[i - 1];
            int M = (int) (0.1 * curEff);
            //最开始, dp[i][j] 取值为 当前采集员(第i个采集员),没有志愿者协助
            dp[i][j] = dp[i - 1][j] + curEff - 2 * M;

            //有 1 个志愿者协助当前采集员
            if (j >= 1) {
                dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 1] + curEff);
            }

            //有 2 个志愿者协助当前采集员
            if (j >= 2) {
                dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 2] + curEff + M);
            }

            //有 3 个志愿者协助当前采集员
            if (j >= 3) {
                dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 3] + curEff + 2 * M);
            }

            //有 4 个志愿者协助当前采集员
            if (j >= 4) {
                dp[i][j] = Math.max(dp[i][j], dp[i - 1][j - 3] + curEff + 3 * M);
            }
        }
    }
    System.out.println(dp[m][n]);
}

六、效果展示

1、输入

2 2
200 200

2、输出

400

在这里插入图片描述


🏆下一篇:华为OD机试真题 Java 实现【跳房子II】【2023 B卷 100分】,附详细解题思路

🏆本文收录于,华为OD机试(JAVA)(2022&2023)

本专栏包含了最新最全的2023年华为OD机试真题,有详细的分析和Java解答。已帮助1000+同学顺利通过OD机考。专栏会持续更新,每天在线答疑。

在这里插入图片描述


http://www.niftyadmin.cn/n/465625.html

相关文章

团体程序设计天梯赛-练习集L2篇⑥

&#x1f680;欢迎来到本文&#x1f680; &#x1f349;个人简介&#xff1a;Hello大家好呀&#xff0c;我是陈童学&#xff0c;一个与你一样正在慢慢前行的普通人。 &#x1f3c0;个人主页&#xff1a;陈童学哦CSDN &#x1f4a1;所属专栏&#xff1a;PTA &#x1f381;希望各…

操作系统3:CPU任务调度和进程调度

目录 1、处理机调度的层次 &#xff08;1&#xff09;高级调度(High Level Scheduling) &#xff08;2&#xff09;低级调度(Low Level Scheduling) &#xff08;3&#xff09;中级调度(Intermediate Scheduling) 2、处理机调度算法的目标 批处理系统的目标 3、作业与作…

基于SRE的slo与sli设计

运行评价记录 null 维度容量volume可用性availability延迟latency错误率errors工单tickets每日总请求数tps峰值整体可用率90分位值(ms)95分位值(ms)5xx(%)人工介入数slo10000020099.965507500.040日期1       日期2        slo推演 服务等级目标slo错误预算er…

问问GPT:android中怎么使用tensorflow

android中怎么使用tensorflow 在 Android 中使用 TensorFlow&#xff0c;你需要进行以下步骤: 安装 TensorFlow Lite 库&#xff1a;首先&#xff0c;你需要在你的 Android 项目中添加 TensorFlow Lite 库。你可以从 TensorFlow 官网下载最新版本的 TensorFlow Lite 库。 导入…

libevent(9)通过libevent实时监听文件的更新

这里我们利用libevent监听centos系统上的login日志文件&#xff0c;文件路径&#xff1a;/var/log/secure。&#xff08;ubuntu下是"/var/log/auth.log"&#xff09; 代码如下 test_file.cpp&#xff1a; #include <iostream> #include <thread> #inclu…

接口测试持续集成

目录 一.在Windows系统上部署Jenkins1.下载Jenkins安装包2.启动Tomcat服务3.通过浏览器访问Jenkins 二.管理Jenkins中的插件1.安装插件2.更新插件3.卸载插件 三.创建项目四.配置项目运行频率 一.在Windows系统上部署Jenkins 1.下载Jenkins安装包 进入Jenkins官网&#xff0c;…

git cherry-pick

git cherry-pick 这个命令的作用就是把指定的commit&#xff0c;拉到一个新的分支上。 对于多分支的代码库&#xff0c;将代码从一个分支转移到另一个分支是常见需求。 这时分两种情况。一种情况是&#xff0c;你需要另一个分支的所有代码变动&#xff0c;那么就采用合并&…

城市内涝监测需要什么设备

近年来&#xff0c;随着城市化进程的加快&#xff0c;城市内涝问题愈发突出。强降雨、缺乏排水设施和过度的人类活动等因素&#xff0c;导致城市内涝灾害频发。内涝不仅给居民生活和财产安全带来威胁&#xff0c;还对城市基础设施和经济发展造成严重影响。 为了应对城市内涝灾…