华为OD机试真题【服务器能耗统计】

1、题目描述

【服务器能耗统计】

服务器有三种运行状态:空载、单任务、多任务,每个时间片的能耗的分别为1、3、4;

每个任务由起始时间片和结束时间片定义运行时间;

如果一个时间片只有一个任务需要执行,则服务器处于单任务状志;

如果一个时间片有多个任务需要执行,则服务器处于多任务状态;

给定一个任务列表,请计算出从第一个任务开始,到所有任务结束,服务器的总能耗。

【输入描述】

第一行的数字表示一共有多少个任务

后续每行包含由空格分割的两个整数,用于确定每一个任务的起始时间片和结束时间片;

任务执行时间包含起始和结束时间片,即任务执行时间是左团右闭的;

结束时间片一定大于等于起始时间片;

【输出描述】

一个整数,代表服务器的总能耗

【样例1】
输入:

2

2 5

8 9
输出:

20

解释:

0,1没有任务需要执行,能耗为0

2,5处于单任务状态,能耗为34=12
6,7处于空载状态,能耗为1
2=2

8,9处于单任务状态,能耗为3*2=6

共计能耗为12+2+6=20

【样例2】
输入:

3

4 8

1 6

2 9
输出:

34

解释:

0,1没有任务需要执行,能耗为0

1,1处于单任务状态,能耗为31=3
2,8处于多任务状态,能耗为4
7=28

9,9处于单任务状态,能耗为3*1=3

共计能耗为3+28+3=34

2、解题思路

统计出最小和最大的运行时间,并统计从0到最大运行时间之间每个时间的任务数量,遍历每个任务的开始时间到结束时间并将其任务数量加一。最后,遍历统计的任务数量,空载消化1,单任务消化3,多任务消化3,注意是最小开始时间到最大结束时间之间。

3、参考代码

java 复制代码
import java.util.Scanner;

/**
 * @Author
 * @Date 2023/5/5 22:55
 */
public class 服务器能耗统计 {
    public static void main(String[] args) {
        Scanner in = new Scanner(System.in);
        while (in.hasNext()) {
            int num = in.nextInt();
            int[][] times = new int[num][2];
            int minTime = Integer.MAX_VALUE;
            int maxTime = 0;

            for (int i = 0; i < num; i++) {
                times[i][0] = in.nextInt();
                times[i][1] = in.nextInt();
                minTime = Math.min(minTime, times[i][0]);
                maxTime = Math.max(maxTime, times[i][1]);
            }
            System.out.println(total(num, times, minTime, maxTime));
        }
    }

    public static int total(int num, int[][] times, int minTime, int maxTime) {
        // 统计每个时间的任务数
        int[] time = new int[maxTime + 1];
        for (int i = 0; i < num; i++) {
            for (int j = times[i][0]; j <= times[i][1]; j++) {  // 遍历开始时间到结束时间
                time[j]++;
            }
        }

        int res = 0;
        for (int i = minTime; i <= maxTime; i++) {
            if (time[i] == 0) {  // 空载
                res += 1;
            } else if (time[i] == 1) {  // 单任务
                res += 3;
            } else {
                res += 4;
            }
        }

        return res;
    }
}

4、相似题目

相关推荐
零基础1234 分钟前
PDF 处理工具全攻略:pdf24、PDFgear、Adobe Acrobat DC 与 Stirling-PDF 深度对比
java·开发语言·pdf
SL_staff19 分钟前
制造业数字化协同:为什么甘特图只是起点,不是终点
java·开源·全栈
anew___36 分钟前
《从零手写操作系统 (29):管道与重定向进阶——命名管道、Here Document与Shell语法扩展》
java·开发语言·前端·javascript·网络
Mikko741 分钟前
JVM 线上排查实战(六):JFR 怎么用?JDK 8 要不要加 UnlockCommercialFeatures、jfr 命令在哪、录的文件为什么读不了
java·运维·jvm·后端
奇牙coding1 小时前
GPT-5.5 API 报 401 但 GPT-5.4 正常怎么办?不是 Key 失效,是 Organization 头的强制校验变了
java·网络·gpt·ai
a努力。1 小时前
Context-State-Memory三重信息架构揭秘
java·服务器·前端
captain3761 小时前
Maven
java·后端·idea
liangshanbo12152 小时前
主系统登录后,子系统怎么实现自动登录?
java·网络·数据库
ShineWinsu2 小时前
对于Redis:缓存的解析
java·redis·缓存·缓存穿透·缓存击穿·缓存雪崩·缓存预热
rannn_1112 小时前
【Java面试题】高频面试题1|Java 后端、MySQL、Redis 与 RAG 面试整理
java·jvm·数据库·后端·面试