小工具知识网

当前位置: 首页 > 行业知识 > 华为OD机试C卷-- 执行任务赚积分(Java & JS & Python & C)

行业知识

华为OD机试C卷-- 执行任务赚积分(Java & JS & Python & C)

2026-11-06 06:39:43 来源:互联网转载

获取题库不需要订阅专栏,可直接私信我进入CSDN领军人物top1博主的华为OD交流圈观看完整题库、最新面试实况、考试报告等内容以及大佬一对一答疑。
题目描述
现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。
每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。
可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。

输入描述
第一行为一个数 N,表示有 N 个任务

  • 1 ≤ N ≤ 100
    第二行为一个数 T,表示可用于处理任务的时间
  • 1 ≤ T ≤ 100
    接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。
  • 1 ≤ SLA ≤ 100
  • 0 ≤ V ≤ 100000

输出描述
可获得的最多积分

题目解析
本题是一个典型的贪心算法问题。为了获得最多的积分,我们应该优先处理积分值高且最晚处理时间早的任务。这是因为,如果我们在一个任务的最晚处理时间之前没有完成它,那么这个任务所带来的积分将丢失。为了最大化总积分,我们需要优先考虑积分多且时间限制紧迫的任务。

贪心策略:
1.根据任务的积分和最晚处理时间,我们可以定义一个优先级:积分越高、最晚处理时间越早的任务优先级越高。
2.我们可以使用一个最大堆(在Java中通常是PriorityQueue,Pyt

上一篇:Springboot 我随手封装了一个万能的导出excel工具,传什么都能导出

下一篇:手工制作扇子教程,轻松掌握扇子制作的艺术!