华为OD机试C卷(100分)-执行任务赚积分(c语言)

题目描述

现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。
每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。
可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。

输入描述

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

输出描述

可获得的最多积分

用例

输入 4
3
1 2
1 3
1 4
1 5
输出 5
说明 虽然有3个单位的时间用于处理任务,可是所有任务在时刻1之后都无效。
所以在第1个时间单位内,选择处理有5个积分的任务。1-3时无任务处理。

输入 4
3
1 2
1 3
1 4
3 5
输出 9

说明

第1个时间单位内,处理任务3,获得4个积分
第2个时间单位内,处理任务4,获得5个积分
第3个时间单位内,无任务可处理
共获得9个积分

#include <stdio.h>
#include <stdlib.h>
typedef struct{int endTime;int score;
}WorkOrder;
int cmp(const void *a,const void *b){return (*(WorkOrder*)a).score-(*(WorkOrder*)b).score;
}
int getResult(int n,int t,WorkOrder *wos){qsort(wos,n,sizeof(WorkOrder),cmp);int ans=0;int curTime=0;WorkOrder *pq=(WorkOrder*)malloc(t*sizeof(WorkOrder));int pqSize=0;for(int i=0;i<n;i++){int endTime=wos[i].endTime;int score=wos[i].score;if(curTime<endTime){//当前时间小于任务最晚完成时间pq[pqSize++]=wos[i];//加入队列ans+=score;//加上积分curTime++;}else{//当前时间大于等于任务最晚完成时间int min_score=pq[0].score;//最小积分int min_index=0;//找到最小积分for(int j=1;j<pqSize;j++){if(pq[j].score<min_score){min_score=pq[j].score;min_index=j;//最小积分对应下标}}if(score>min_score){//当前积分大于最小积分ans+=score-min_score;pq[min_index]=wos[i];//替换较小积分的任务}}while(pqSize>t){//任务数大于tint min_score=pq[0].score;int min_index=0;for(int j=1;j<pqSize;j++){//找到积分最小任务if(pq[j].score<min_score){min_score=pq[j].score;min_index=j;}}ans-=pq[min_index].score;//减去积分最小的任务for(int j=min_index;j<pqSize-1;j++)pq[j]=pq[j+1];pqSize--;//任务数减少}}free(pq);return ans;
}
int main()
{int n,t;scanf("%d",&n);scanf("%d",&t);WorkOrder *wos=(WorkOrder*)malloc(n*sizeof(WorkOrder));for(int i=0;i<n;i++)scanf("%d %d",&wos[i].endTime,&wos[i].score);int res=getResult(n,t,wos);printf("%d\n",res);free(wos);return 0;
}

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

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

相关文章

AI学习指南机器学习篇-随机森林超参数选择与调优

AI学习指南机器学习篇-随机森林超参数选择与调优 随机森林是一种强大的机器学习算法&#xff0c;它能够处理复杂的数据集&#xff0c;并且对于大部分实际问题都表现出色。然而&#xff0c;要充分发挥随机森林的性能&#xff0c;需要对其超参数进行合理选择和调优。本文将介绍随…

React:tabs或标签页自定义右击菜单内容,支持内嵌iframe关闭菜单方案

React&#xff1a;tabs或标签页自定义右击菜单内容&#xff0c;支持内嵌iframe关闭菜单方案 不管是react、vue还是原生js&#xff0c;原理是一样的。 注意如果内嵌iframe情况下&#xff0c;iframe无法使用事件监听&#xff0c;但是可以使用iframe的任何点击行为都会往父级wind…

入门Java爬虫:认识其基本概念和应用方法

Java爬虫初探&#xff1a;了解它的基本概念与用途&#xff0c;需要具体代码示例 随着互联网的快速发展&#xff0c;获取并处理大量的数据成为企业和个人不可或缺的一项任务。而爬虫&#xff08;Web Scraping&#xff09;作为一种自动化的数据获取方法&#xff0c;不仅能够快速…

Pegasus平台Pytorch源码编译

和Drive PX2的编译没有什么区别 源码编译步骤 注意&#xff1a;当完全按照以下步骤进行编译时&#xff0c;如果出现错误&#xff0c;注意检查CUDA版本、对应的库是否存在 # Download PyTorch sources git clone --recursive --branch <version> http://github.com/pyt…

vtk渲染过程

vtk渲染 VTK的渲染过程主要包括创建渲染器、添加演员到渲染器、创建渲染窗口、创建交互器、将渲染器添加到渲染窗口中、将交互器与渲染窗口关联、启动交互器循环等步骤。12 创建渲染器(Renderer): 首先&#xff0c;需要创建一个或多个渲染器。渲染器是VTK中的一个重要组件&am…

在Ubuntu 16.04上安装和配置Elasticsearch的方法

前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;忍不住分享一下给大家。点击跳转到网站。 简介 Elasticsearch 是一个用于实时分布式搜索和数据分析的平台。它因易用性、强大功能和可扩展性而备受欢迎。 Elasticsearch 支持 R…

vue2(vue-cli3x[vue.config.js])使用cesium新版(1.117.0)配置过程

看来很多解决方法都没有办法&#xff0c;最后终于。呜呜呜呜 这里我用的是vue-cli去搭建的项目的vue2 项目&#xff0c;其实不建议用vue2搭配cesium。因为目前cesium停止了对vue2的版本更新&#xff0c;现在默认安装都是vue3版本&#xff0c;因此需要控制版本&#xff0c;否则…

Kylin支持哪些数据源,它们之间有什么区别

Apache Kylin支持多种数据源&#xff0c;这些数据源为Kylin提供了从不同类型和存储方式的数据中获取和处理数据的能力。以下是Kylin支持的主要数据源及其之间的区别&#xff1a; Apache Hadoop HDFS&#xff1a; 描述&#xff1a;HDFS是Hadoop生态系统中用于存储大数据的文件系…

Node.js简介

一&#xff1a;Node.js简介 Node.js是一个跨平台的JavaScript运行环境&#xff0c;使开发者可以搭建服务器端的JavaScript应用程序 作用&#xff1a;使用Node.js编写服务器端程序 编写数据接口&#xff0c;提供网页资源浏览功能有利于前端工程化&#xff0c;可以集成各种开发…

鸿蒙系统的前世今生

2019年8月9日&#xff0c;华为在开发者大会上发布EMUI 10的同时宣告了HarmonyOS 1.0的诞生。鸿蒙诞生的背景是&#xff0c;美限制华为与谷歌以及其他美国科技公司开展业务。 前华为开发者大会上&#xff0c;HarmonyOS NEXT&#xff08;原生鸿蒙&#xff09;正式公布&#xff0c…

【力扣高频题】011. 盛最多水的容器

前面的算法文章&#xff0c;更新了许多 专题系列 。包括&#xff1a;滑动窗口、动态规划、加强堆、二叉树递归套路 等。 还没读过的小伙伴可以关注一下&#xff0c;在主页中点击对应链接查看哦~ 接下来的一段时间&#xff0c;将持续 「力扣高频题」 系列文章&#xff0c;想刷 …

Java基础知识-线程池

1、为什么要用线程池&#xff1f; 创建线程要花费昂贵的资源和时间&#xff0c;如果任务来了才创建线程那么响应时间会变长&#xff0c;而且一个进程能创建的线程数 有限。为了避免这些问题&#xff0c;在程序启动的时候就创建若干线程来响应处理&#xff0c;它们被称为线程池&…

使用pywinauto自动重连easyconnect

启动easyconnect后&#xff0c;运行该脚本&#xff0c;实现自动重连。需要填一下连接的地址&#xff0c;用户名和密码(替换一下脚本里的xxx) from pywinauto import application from pywinauto import timings import time# 初始化应用程序对象 app1 application.Applicatio…

2710. 移除字符串中的尾随零 Easy

给你一个用字符串表示的正整数 num &#xff0c;请你以字符串形式返回不含尾随零的整数 num 。 示例 1&#xff1a; 输入&#xff1a;num "51230100" 输出&#xff1a;"512301" 解释&#xff1a;整数 "51230100" 有 2 个尾随零&#xff0c;移…

idea2024使用springboot3.x系列新建java项目,使用jdk17,启动项目报错

身为一名开发人员&#xff0c;敲代码无数&#xff0c;竟被一个小小启动给我卡了大半天&#xff0c;太丢脸了 报错一&#xff1a;Field infoSysRepository in com.erectile.Impl.PersonalInfoServiceImpl required a bean of type ‘com.erectile.jpa.repository.InfoSysReposit…

Spring:Spring中分布式事务解决方案

一、前言 在Spring中&#xff0c;分布式事务是指涉及多个数据库或系统的事务处理&#xff0c;其中事务的参与者、支持事务的服务器、资源管理器以及事务管理器位于分布式系统的不同节点上。这样的架构使得两个或多个网络计算机上的数据能够被访问并更新&#xff0c;同时将这些操…

使用通用的响应格式

使用泛型响应类&#xff08;或者类似的响应封装类&#xff09;在网络编程和API设计中有很多好处&#xff0c;包括但不限于以下几点&#xff1a; 统一响应格式&#xff1a; 使用R<T>可以确保API的所有响应都遵循相同的格式&#xff0c;这有助于客户端更容易地解析和处理响…

IP地址与在线教育平台资源分配优化

IP地址的资源分配与优化策略可以帮助在线教育平台提供更高质量、稳定且个性化的教育服务。 IP地址作为网络设备的标识符&#xff0c;能够为在线教育平台提供有关学生地理位置和网络环境信息。通过对学生IP地址的分析&#xff0c;平台可以初步了解学生所在的地区、网络服务提供商…

回收站的照片删除了怎么找回?

大家在日常使用电脑的过程中&#xff0c;难免会遇到不小心删除重要文件的情况&#xff0c;尤其是珍贵的照片。当我们意识到误删照片时&#xff0c;第一反应通常是去回收站找回。然而&#xff0c;如果连回收站的照片都被删除了&#xff0c;该如何恢复呢&#xff1f;本文将详细探…

【MySQL】事务的快照生成时间点和薛定谔的猫相关?

概述 最近因为工作需要&#xff0c;对MySQL的事务处理进行了一系列测试验证&#xff0c;其中&#xff0c;对于MySQL的事务到底时什么时候生成了数据的快照&#xff0c;结果似乎跟薛定谔的猫理念很像&#xff0c;很有意思&#xff1b;过程我贴出来&#xff0c;有兴趣的朋友可以一…