【2024最新华为OD-C/D卷试题汇总】[支持在线评测] 任务积分优化问题(100分) - 三语言AC题解(Python/Java/Cpp)

news2025/1/19 17:22:57

🍭 大家好这里是清隆学长 ,一枚热爱算法的程序员

✨ 本系列打算持续跟新华为OD-C/D卷的三语言AC题解

💻 ACM银牌🥈| 多次AK大厂笔试 | 编程一对一辅导

👏 感谢大家的订阅➕ 和 喜欢💗

📎在线评测链接

任务积分优化问题(100分)
🌍 评测功能需要 订阅专栏 后私信联系清隆解锁~

🍓OJ题目截图

在这里插入图片描述

文章目录

    • 📎在线评测链接
    • 🍓OJ题目截图
    • 🌲 任务积分优化问题
      • 问题描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码

🌲 任务积分优化问题

问题描述

K小姐在一家公司负责完成一系列任务,每个任务都有一个最晚完成时间和相应的积分奖励。现在,K小姐想知道在有限的时间内,她最多能获得多少积分。

输入格式

第一行包含一个整数 N N N,表示任务的数量。

第二行包含一个整数 T T T,表示可用于处理任务的时间。

接下来 N N N 行,每行两个整数 S L A SLA SLA V V V,分别代表任务的最晚处理时间和任务的积分值。

输出格式

输出一个整数,表示在限定的时间内能获得的最大积分。

样例输入

4
3
1 2
1 3
1 4
1 5

样例输出

5

数据范围

  • 1 ≤ N ≤ 100 1 \leq N \leq 100 1N100
  • 1 ≤ T ≤ 100 1 \leq T \leq 100 1T100
  • 1 ≤ S L A ≤ 100 1 \leq SLA \leq 100 1SLA100
  • 0 ≤ V ≤ 100000 0 \leq V \leq 100000 0V100000

题解

本题是一个经典的贪心选择问题,目标是在有限的时间内完成尽可能多的积分。由于每个任务都需要一个单位时间来完成,我们需要优先处理积分高且截止时间紧迫的任务。可以采用优先队列(最大堆)来实现,每次选择可完成任务中积分最高的任务进行处理。

参考代码

  • Cpp
#include <iostream>
#include <vector>
#include <queue>
#include <algorithm>
using namespace std;

int main() {
    int N, T;
    cin >> N >> T;
    vector<pair<int, int>> tasks(N);
    for (int i = 0; i < N; i++) {
        cin >> tasks[i].first >> tasks[i].second;
    }
    sort(tasks.begin(), tasks.end());
    priority_queue<int> pq;
    int current_time = 0, score = 0;
    for (int i = 0; i < N; i++) {
        if (current_time < T && tasks[i].first > current_time) {
            pq.push(tasks[i].second);
            current_time++;
        } else if (!pq.empty() && pq.top() < tasks[i].second) {
            pq.pop();
            pq.push(tasks[i].second);
        }
    }
    while (!pq.empty()) {
        score += pq.top();
        pq.pop();
    }
    cout << score << endl;
    return 0;
}
  • Python
import heapq

N, T = [int(input()) for _ in range(2)]
tasks = []
for _ in range(N):
    tasks.append(tuple(map(int, input().split())))
tasks.sort()
pq = []
current_time, score = 0, 0
for task in tasks:
    if current_time < T and task[0] > current_time:
        heapq.heappush(pq, -task[1])
        current_time += 1
    elif pq and -pq[0] < task[1]:
        heapq.heappop(pq)
        heapq.heappush(pq, -task[1])
while pq:
    score += -heapq.heappop(pq)
print(score)

  • Java
import java.util.*;

public class TaskScheduler {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        int N = scanner.nextInt();
        int T = scanner.nextInt();
        List<Task> tasks = new ArrayList<>();
        for (int i = 0; i < N; i++) {
            int start = scanner.nextInt();
            int end = scanner.nextInt();
            tasks.add(new Task(start, end));
        }
        Collections.sort(tasks);
        PriorityQueue<Integer> pq = new PriorityQueue<>(Collections.reverseOrder());
        int currentTime = 0, score = 0;
        for (Task task : tasks) {
            if (currentTime < T && task.start > currentTime) {
                pq.add(task.end);
                currentTime++;
            } else if (!pq.isEmpty() && pq.peek() < task.end) {
                pq.poll();
                pq.add(task.end);
            }
        }
        while (!pq.isEmpty()) {
            score += pq.poll();
        }
        System.out.println(score);
    }

    static class Task implements Comparable<Task> {
        int start;
        int end;

        public Task(int start, int end) {
            this.start = start;
            this.end = end;
        }

        @Override
        public int compareTo(Task other) {
            return Integer.compare(this.start, other.start);
        }
    }
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1832309.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

配置文件-基础配置,applicationproperties.yml

黑马程序员Spring Boot2 文章目录 1、属性配置2、配置文件分类3、yaml文件4、yaml数据读取4.1 读取单个数据4.2 读取全部属性数据4.3 读取引用类型属性数据 1、属性配置 SpringBoot默认配置文件application.properties&#xff0c;通过键值对配置对应属性修改配置 修改服务器端…

第二十一篇——信道:信息通道的容量有边界嘛?

目录 一、背景介绍二、思路&方案三、过程1.思维导图2.文章中经典的句子理解3.学习之后对于投资市场的理解4.通过这篇文章结合我知道的东西我能想到什么&#xff1f; 四、总结五、升华 一、背景介绍 通过这篇文章&#xff0c;形象的知道了信息通道的容量边界&#xff1b;以…

学生党打工人救星,GPT一句话生成精美PPT

学生党打工人救星&#xff0c;GPT一句话生成精美PPT 介绍 在这个快节奏的现代社会&#xff0c;效率是关键。无论是工作会议、学术报告&#xff0c;还是产品展示&#xff0c;一个精美而结构合理的 PPT 都是成功的关键。然而&#xff0c;制作一个高质量的 PPT 往往需要耗费大量…

JavaEE进阶----SpringBoot快速入门

文章目录 前言一、了解Maven1.1 Maven功能- 项⽬构建- 管理依赖 1.2Maven仓库 二、第一个SpringBoot项目总结 前言 Spring Boot是一个用于构建快速、简单和可扩展的生产级应用程序的框架。它基于Spring框架&#xff0c;提供了开发微服务和独立的应用程序所需的一切。 一、了解…

【UIDynamic-动力学-UICollisionBehavior-碰撞模式-创建边界 Objective-C语言】

一、我们来说这个碰撞模式 1.把之前的代码备份一下,改个名字:“04-碰撞行为-碰撞模式”, 然后,command + R,先跑一下, 我现在,一点击,是这个红色的View、和蓝色的View、在发生碰撞, 我们说,碰撞模式是啥意思, collision里边,有一个叫做collisionMode, UICollis…

高考分数限制下,选好专业还是选好学校?

高考分数限制下&#xff0c;选好专业还是选好学校&#xff1f; 高考作为每年一度的盛大考试&#xff0c;不仅关乎学生们的未来&#xff0c;更承载了家庭的期望。2004年高考刚刚结束&#xff0c;许多考生和家长已经开始为填报志愿而焦虑。选好学校和专业&#xff0c;直接关系到…

WPF学习(4)--SCICHART学习

一、项目创建过程 1.下载SCICHART插件 2.选中第一个&#xff0c;确保引用中有我们要用的 二、示例代码 1.前端代码 <Window x:Class"SciChart.Examples.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x"h…

TSP:常春藤算法IVY求解旅行商问题TSP(可以更改数据),MATLAB代码

一、旅行商问题介绍 二、常春藤算法IVY求解TSP 2.1算法介绍 常春藤算法&#xff08;Ivy algorithm&#xff0c;IVY&#xff09;是Mojtaba Ghasemi 等人于2024年提出智能优化算法。该算法模拟了常春藤植物的生长模式&#xff0c;通过协调有序的种群增长以及常春藤植物的扩散和…

AI大模型真的能让IT工程师薪资再起飞一次吗?

前言 作为传统的IT从业者&#xff0c;开发工程师&#xff0c;测试工程师&#xff0c;数据分析师们&#xff0c;面对如此飞快的技术迭代&#xff0c;是否有了深深的危机感&#xff1f;过去两三年&#xff0c;本来就身处互联网行业寒冬&#xff0c;现在又要面对AI大模型带来的挑…

Unity | Shader基础知识(第十四集:简单效果练习)

目录 前言 一、效果预览 1.弧形边缘光 二、效果制作 1. 制作弧形边缘光 2.弧形边缘光进阶 3.弧形边缘光调节渐变范围 4.边缘光突变 5.同心圆 三、加入世界坐标做效果 1.绘制结界 2.斑马球 3.效果合并 四、作者的碎碎念 前言 有粉丝建议说&#xff0c;让我继续更新…

R可视化:微生物相对丰度或富集热图可视化

欢迎大家关注全网生信学习者系列: WX公zhong号:生信学习者Xiao hong书:生信学习者知hu:生信学习者CDSN:生信学习者2介绍 热图(Heatmap)是一种数据可视化方法,它通过颜色的深浅或色调的变化来展示数据的分布和密度。在微生物学领域,热图常用于表示微生物在不同分组(如…

代发考生战报:HCIP H12-725安全变题了

代发考生战报&#xff1a;HCIP H12-725安全变题了&#xff0c;幸好当天找客服办理的包过服务&#xff0c;听同考场的考生说&#xff0c;考试全是新题&#xff0c;只有1-2个是题库上的题&#xff0c;自己考的都考挂了&#xff0c;帮我答题的老师很厉害&#xff0c;很赞&#xff…

Web后端开发的学习

REST风格 GET:查询用户POST:新增用户POT:修改用户DELETE:删除用户 前后端交互统一的响应结果 记录日志 SLf4j 注解&#xff1a; PathVariable&#xff1a;获取路径的参数ResponseBody :方法的返回值直接作为 HTTP 响应的正文返回,将响应的实体类转为json发送给前端Request…

qml自定义组件

不管是component还是分文件编写的一个自定义组件&#xff0c;遵循如下&#xff1a; a:不管哪一级的子对象 都可以直接调根节点下的方法和属性 b:不管哪一级的子对象 调用非根节点的方法和属性&#xff0c;前面要加上该节点的id,即id.方法()或id.属性的形式 import QtQuick 2.…

《Java2实用教程》 期末考试整理

作用域 当前类 当前包 子类 其他包 public √ √ √ √ protected √ √ √ default √ √ private √ 三、问答题&#xff08;每小题4分&#xff0c;共8分&#xff09; 1.类与对象的关系 对象&#xff1a;对象是类的一个实例&#xff0c;有状…

Oracle--数据字典

1.介绍 数据字典是Oracle存储数据库内部信息的地方&#xff0c;描述了数据库内部的运行和管理情况 Oracle数据字典的名称由前缀和后缀组成&#xff0c;使用下划线_连接&#xff1a; dba_&#xff1a;包含数据库实例的所有对象信息v$_&#xff1a;当前实例的动态视图&#xff0…

成龙“参战”暑期档,2024会成为博纳的爆发之年吗?

作为全年最长的档期&#xff0c;暑期档即将迎来观影高峰期&#xff0c;电影市场的竞争已然打响。 根据猫眼数据&#xff0c;目前共有79部影片预计在暑期档上映&#xff0c;且数量仍在持续攀升&#xff0c;这个暑假线下影院势必会非常热闹。 不过电影数量虽多&#xff0c;却依…

RTOS笔记--资源管理

资源管理 资源管理&#xff0c;其实就是前面介绍过的通知方式中的队列信号量互斥量等是如何访问临界资源的&#xff0c;如何做到完全互斥。 在之前举过一个例子&#xff1a;当我们使用全局变量来进行互斥操作时&#xff0c;有可能在改写全局变量时被切换使得不再互斥&#xff0…

一、开发环境安装 Avalonia

1、概述 官网中是这么介绍Avalonia的&#xff0c;Avalonia是一个强大的框架&#xff0c;使开发人员能够使用.NET创建跨平台应用程序。它使用自己的渲染引擎绘制UI控件&#xff0c;确保在Windows、macOS、Linux、Android、iOS和WebAssembly等不同平台上具有一致的外观和行为。这…

黄金价格与美元的关系变了?

在一些传统的定价框架中&#xff0c;现货黄金的价格走势取&#xff0c;决于美元的实际利率水平——实际利率越高&#xff0c;黄金价格越低&#xff0c;反之亦然。在大多数的时候&#xff0c;美元的实际利率决定了美元指数的高低所以人们通常认为&#xff0c;现货金价与美元呈反…