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

1、题目描述

【服务器能耗统计】

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

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

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

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

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

【输入描述】

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

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

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

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

【输出描述】

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

【样例1】
输入:

2

2 5

8 9
输出:

20

解释:

0,1\]没有任务需要执行,能耗为0 \[2,5\]处于单任务状态,能耗为3*4=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\]处于单任务状态,能耗为3*1=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、相似题目

相关推荐
李少兄1 小时前
Unirest:优雅的Java HTTP客户端库
java·开发语言·http
此木|西贝1 小时前
【设计模式】原型模式
java·设计模式·原型模式
可乐加.糖2 小时前
一篇关于Netty相关的梳理总结
java·后端·网络协议·netty·信息与通信
s9123601012 小时前
rust 同时处理多个异步任务
java·数据库·rust
9号达人2 小时前
java9新特性详解与实践
java·后端·面试
cg50172 小时前
Spring Boot 的配置文件
java·linux·spring boot
啊喜拔牙2 小时前
1. hadoop 集群的常用命令
java·大数据·开发语言·python·scala
anlogic3 小时前
Java基础 4.3
java·开发语言
非ban必选3 小时前
spring-ai-alibaba第七章阿里dashscope集成RedisChatMemory实现对话记忆
java·后端·spring
A旧城以西3 小时前
数据结构(JAVA)单向,双向链表
java·开发语言·数据结构·学习·链表·intellij-idea·idea