华为OD刷题C卷 - 每日刷题32(执行任务赚积分,计算三叉搜索树的高度)
1、(执行任务赚积分):
这段代码是解决“执行任务赚积分”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算在有限的时间内,处理任务可以获得的最多积分。
main方法首先读取任务数量n和可用于处理任务的时间t,然后读取每个任务的最晚处理时间限制和积分值,存储在二维数组wos中。接着,调用getResult方法并打印出可获得的最多积分。
getResult方法首先按任务的最晚处理时间对任务进行升序排序。接着,使用一个ArrayList来维护在当前时间curTime内可以获得的积分列表。遍历所有任务,如果当前时间小于任务的最晚处理时间,则将任务积分添加到列表中,并更新当前时间。如果当前时间已经过了任务的最晚处理时间,则使用列表中的最小积分与当前任务积分进行比较,保留积分较高的任务。
最后,对列表进行排序并只保留最大的t个积分值,计算并返回这些积分值的总和。
2、(计算三叉搜索树的高度):
这段代码是解决“计算三叉搜索树的高度”的问题。它提供了一个Java类Main,其中包含main方法,以及两个内部类TreeNode和Tree,用于构建三叉搜索树并计算树的高度。
main方法首先读取要插入的数的数量n,然后读取这些数,使用Tree类的add方法将它们按规则插入三叉搜索树中。最后,打印出树的高度。
TreeNode内部类表示树的节点,包含节点值、高度以及指向左右中子树的引用。
Tree内部类包含根节点和树的高度。add方法实现了将新数按照给定规则插入三叉搜索树的逻辑。在插入过程中,同时更新节点的高度和树的当前最大高度。
package OD359;import com.sun.source.tree.Tree;import java.util.*;/*** @description 执行任务赚积分* @level 7* @score 100*//*** 题目描述* 现有N个任务需要处理,同一时间只能处理一个任务,处理每个任务所需要的时间固定为1。* <p>* 每个任务都有最晚处理时间限制和积分值,在最晚处理时间点之前处理完成任务才可获得对应的积分奖励。* <p>* 可用于处理任务的时间有限,请问在有限的时间内,可获得的最多积分。* <p>* 输入描述* 第一行为一个数 N,表示有 N 个任务* <p>* 1 ≤ N ≤ 100* 第二行为一个数 T,表示可用于处理任务的时间* <p>* 1 ≤ T ≤ 100* 接下来 N 行,每行两个空格分隔的整数(SLA 和 V),SLA 表示任务的最晚处理时间,V 表示任务对应的积分。* <p>* 1 ≤ SLA ≤ 100* 0 ≤ V ≤ 100000* 输出描述* 可获得的最多积分*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//有n个任务int n = sc.nextInt();//用于处理任务的时间int t = sc.nextInt();//n个任务的 最晚处理时间 对应积分int[][] wos = new int[n][2];for (int i = 0; i < n; i++) {wos[i][0] = sc.nextInt();wos[i][1] = sc.nextInt();}//可获得的最多积分System.out.println(getResult(t, wos));}//再t时间内可获得的最多积分public static int getResult(int t, int[][] wos) {//按endTime升序排序Arrays.sort(wos, (a, b) -> a[0] - b[0]);//已获得的积分int value = 0;//当前时间int curTime = 0;//存放可能获得的积分ArrayList<Integer> list = new ArrayList<>();//遍历for (int[] wo : wos) {int endTime = wo[0];int score = wo[1];//当curTime<endTime 时,加入if (curTime < endTime) {list.add(score);value += score;curTime++;} else {//当curTime >= endTime时,用list总最小值与当前score比较,放入较大值//总是能存放最大的几个值list.sort((a, b) -> a - b);int min_score = list.get(0);if (score > min_score) {list.remove(0);list.add(score);value += score - min_score;}}}//升序排列list.sort((a, b) -> a - b);//只保留最大的t个值while (list.size() > t) {value -= list.remove(0);}return value;}}
package OD360;import java.util.Scanner;/*** @description 计算三叉搜索树的高度* @level 4* @score 100*/
/*** 题目描述* 定义构造三叉搜索树规则如下:* <p>* 每个节点都存有一个数,当插入一个新的数时,从根节点向下寻找,直到找到一个合适的空节点插入。查找的规则是:* <p>* 如果数小于节点的数减去500,则将数插入节点的左子树* 如果数大于节点的数加上500,则将数插入节点的右子树* 否则,将数插入节点的中子树* 给你一系列数,请按以上规则,按顺序将数插入树中,构建出一棵三叉搜索树,最后输出树的高度。* <p>* 输入描述* 第一行为一个数 N,表示有 N 个数,1 ≤ N ≤ 10000* <p>* 第二行为 N 个空格分隔的整数,每个数的范围为[1,10000]* <p>* 输出描述* 输出树的高度(根节点的高度为1)*/
// 注意类名必须为 Main, 不要有任何 package xxx 信息
public class Main {public static void main(String[] args) {Scanner sc = new Scanner(System.in);//可能有多行输入try-catchint n = sc.nextInt();Tree tree = new Tree();for (int i = 0; i < n; i++) {int val = sc.nextInt();tree.add(val);}System.out.println(tree.tree_height);}//定义树节点static class TreeNode {int val;//节点值int height;//节点高度TreeNode left;//左子树TreeNode mid;//中子树TreeNode right;//右子树//赋值构造方法public TreeNode(int val) {this.val = val;}}//定义三叉树 和添加节点的逻辑static class Tree {//根节点TreeNode root;//数的高度int tree_height;//add方法public void add(int val) {TreeNode node = new TreeNode(val);//如果没有根节点if (this.root == null) {node.height = 1;//根节点高度为1this.root = node;//temp定为root节点this.tree_height = 1;//目前数的高度为1} else {//已存在根节点,则用temp从根节点去逐层比较TreeNode cur = this.root;while (true) {//假设temp是当前cur节点的子节点node.height = cur.height + 1;//更新树的高度this.tree_height = Math.max(this.tree_height, node.height);//如果小于当前节点的数-500,则插入到cur的左子树if (val < cur.val - 500) {//如果没有左子树,则新建左子树,如果有,则更新cur=cur.leftif (cur.left == null) {cur.left = node;//插入后就跳出break;} else {//否则回到while继续搜索cur = cur.left;}} else if (val > cur.val + 500) {//插入右子树if (cur.right == null) {cur.right = node;break;} else {cur = cur.right;}} else {//插入中子树if (cur.mid == null) {cur.mid = node;break;} else {cur = cur.mid;}}}}}}
}
相关文章:
华为OD刷题C卷 - 每日刷题32(执行任务赚积分,计算三叉搜索树的高度)
1、(执行任务赚积分): 这段代码是解决“执行任务赚积分”的问题。它提供了一个Java类Main,其中包含main方法和getResult方法,用于计算在有限的时间内,处理任务可以获得的最多积分。 main方法首先读取任务…...
QT系列教程(11) TextEdit实现Qt 文本高亮
文本高亮 对于textedit里录入的部分单词我们可以实现高亮,实现高亮主要依赖于QSyntaxHighlighter。 我们先创建一个Qt Application类,类名MainWindow, 然后新增一个C类,类名为MySyntaxHighlighter。 #ifndef MYSYNTAXHIGHLIGHTER_H #define …...
蓝队-溯源技巧
溯源技巧 大致思想 通常情况下,接到溯源任务时,获得的信息如下 攻击时间 攻击 IP 预警平台 攻击类型 恶意文件 受攻击域名/IP其中攻击 IP、攻击类型、恶意文件、攻击详情是溯源入手的点。 通过攻击类型分析攻击详情的请求包,看有没有攻击者…...
【5】JDK、JRE和JVM的区别与联系
JDK、JRE和JVM的区别与联系 Java是一种广泛使用的编程语言,它的跨平台特性得益于Java虚拟机(JVM)。然而,在Java的世界里,JDK、JRE和JVM这三个术语常常让人感到困惑。本文将阐述它们各自的功能,以及它们是如…...
【DevOps】Logstash详解:高效日志管理与分析工具
在现代软件开发和运维过程中,日志管理与分析是至关重要的环节。日志可以帮助我们追踪系统行为、诊断问题、优化性能以及确保安全合规。Logstash,作为ELK Stack(Elasticsearch、Logstash、Kibana)的核心组件之一,是一个…...
Vue3 之 Pinia 核心概念(八)
核心概念 State:这是你的应用程序的状态,是一个响应式的对象。 Getters:类似于 Vuex 中的 getters,它们是基于 state 的计算属性。 Actions:类似于 Vuex 中的 mutations 和 actions,它们用于改变 state。但…...
【办公类-04-03】华为助手导出照片视频分类(根据图片、视频的文件名日期分类导出)
背景需求: 用华为手机助手导出的照片视频,只能将jpg照片(exifread读取图片的exif拍摄日期,Png、JPEG、mp4都无法识别到exif信息) 【办公类-04-02】华为助手导出照片(jpg)读取拍摄时间分类导出…...
TVBOX 最新版下载+视频源教程
下载链接 wx 搜索 Geek 前端 发送电视资源进行获取 操作教程...
2024年了,苹果可以通话录音了
人不走空 🌈个人主页:人不走空 💖系列专栏:算法专题 ⏰诗词歌赋:斯是陋室,惟吾德馨 6月11日凌晨,苹果在WWDC24大会上,密集输出了酝酿多时的AI应用更新。苹果对通话、对话、图…...
书生·浦语大模型实战营第二期作业五
1、开发机创建conda环境: 2、安装第三方库: 3、新建pipeline_transformer.py文件,并运行: 4、运行结果: 5、执行模型: 6、与大模型进行对话: 7、默认占有的显存: 8、--cache-max-en…...
树莓派4B_OpenCv学习笔记9:图片的腐蚀与膨胀
今日继续学习树莓派4B 4G:(Raspberry Pi,简称RPi或RasPi) 本人所用树莓派4B 装载的系统与版本如下: 版本可用命令 (lsb_release -a) 查询: Opencv 版本是4.5.1: 图像的膨胀与腐蚀一般用于灰度图或者二值图,今日便来学习…...
Perplexity AI — 探索网络,发掘知识,沟通思想
体验地址:Perplexity AI (国外网站访问需要梯子) Perplexity AI是一款功能强大的人工智能搜索引擎,其特点和优势主要体现在以下几个方面: 功能: 自然语言搜索:Perplexity AI可以理解用户的自然…...
RPC知识
一、为什么要有RPC: HTTP协议的接口,在接口不多、系统与系统交互较少的情况下,解决信息孤岛初期常使用的一种通信手段;优点就是简单、直接、开发方便,利用现成的HTTP协议进行传输。 但是,如果是一个大型的网…...
【爬虫】requests 结合 BeautifulSoup抓取网页数据
一、BeautifulSoup使用步骤 BeautifulSoup 是一个用于从 HTML 或 XML 文件中提取数据的 Python 库。以下是如何使用 BeautifulSoup 来解析 HTML 并提取信息的基本步骤: 1、安装: 如果你还没有安装 BeautifulSoup,你可以使用 pip 来安装它。…...
安全测试框架 二
使用安全测试框架进行测试,可以遵循以下步骤进行,以确保测试的全面性和系统性: 一、明确测试目标和需求 确定测试的范围和重点,明确要测试的系统或应用的安全性方面的关键点和重要性。根据业务需求和安全标准,制定详…...
安徽京准-NTP网络授时服务器助力助力甘南州公共资源交易
安徽京准-NTP网络授时服务器助力助力甘南州公共资源交易 安徽京准-NTP网络授时服务器助力助力甘南州公共资源交易 2024年5月中旬,我安徽京准科技生产研发的NTP时钟服务器成功投运甘南州公共资源交易中心,为该中心的计算机网络系统及其他各业务子系统提供…...
大数据—什么是大数据?
大数据是指所涉及的资料量规模巨大到无法透过主流软件工具,在合理时间内达到撷取、管理、处理、并整理成为帮助企业经营决策更积极目的的资讯。想要更加全面地了解大数据的概念,可以从以下几个维度进行介绍: 大数据的定义: 基本…...
德克萨斯大学奥斯汀分校自然语言处理硕士课程汉化版(第十一周) - 自然语言处理扩展研究
自然语言处理扩展研究 1. 多语言研究2. 语言锚定3. 伦理问题 1. 多语言研究 多语言(Multilinguality)是NLP的一个重要研究方向,旨在开发能够处理多种语言的模型和算法。由于不同语言在语法、词汇和语义结构上存在差异,这成为一个复杂且具有挑战性的研究…...
支持向量机(SVM)中核函数的本质意义
本质上在做什么? 内积是距离度量,核函数相当于将低维空间的距离映射到高维空间的距离,并非对特征直接映射。 为什么要求核函数是对称且Gram矩阵是半正定? 核函数对应某一特征空间的内积,要求①核函数对称;②…...
SpringBoot使用jasypt实现数据库信息的脱敏,以此来保护数据库的用户名username和密码password(容易上手,详细)
1.为什么要有这个需求? 一般当我们自己练习的时候,username和password直接是爆露出来的 假如别人路过你旁边时看到了你的数据库账号密码,他跑到他的电脑打开navicat直接就是一顿连接,直接疯狂删除你的数据库,那可就废…...
intv_ai_mk11效果展示:对复杂问题(如‘Transformer与CNN在NLP任务中差异’)的分层解析能力
intv_ai_mk11效果展示:对复杂问题的分层解析能力 1. 引言:AI对话机器人的进阶能力 在众多AI对话系统中,intv_ai_mk11展现出了独特的优势——它不仅能回答简单问题,更能对复杂技术概念进行结构化解析。今天我们将重点展示它在处理…...
HagiCode Desktop 混合分发架构解析:如何用 PP 加速大文件下载耘
一、Actor 模型:不是并发技巧,而是领域单元 Actor 模型的本质是: Actor 是独立运行的实体 Actor 之间只通过消息交互 Actor 内部状态不可被外部直接访问 Actor 自行决定如何处理收到的消息 Actor 模型真正解决的是: 如何在不共享状…...
全国首个!深开鸿与前海供电公司打造的数据中心电鸿变配电室正式投运
不久前,我国首个专为数据中心设计的用户专用电力开源鸿蒙变配电室在深圳前海投入使用。该项目由深开鸿与深圳前海供电公司打造,以电鸿物联操作系统为核心,融合感知终端、电力物联、数字孪生、人工智能四大能力,为前海信息枢纽大厦…...
避坑指南:在Nacos 2.2.3源码编译适配达梦DM8时,我遇到的5个典型错误及解决方法
Nacos 2.2.3源码编译适配达梦DM8实战:5个典型错误与深度解决方案 最近在将Nacos 2.2.3适配达梦DM8数据库的过程中,我踩了不少坑。这些坑有些是达梦特有的语法问题,有些是Nacos源码中的隐藏陷阱,还有些是环境配置的玄学问题。今天就…...
EasyAnimateV5图生视频实战:多图批量处理脚本开发(Python+requests API)
EasyAnimateV5图生视频实战:多图批量处理脚本开发(Pythonrequests API) 1. 项目背景与需求场景 在日常的内容创作和视频制作中,我们经常遇到这样的需求:需要将大量的静态图片转换为动态视频。无论是电商商品展示、社…...
基于PySide6的YOLO通用检测平台:从零搭建与多场景适配
1. PySide6与YOLO的强强联合 PySide6作为Qt官方提供的Python绑定库,让开发者能够用Python快速构建跨平台的图形界面应用。而YOLO作为当前最流行的实时目标检测算法,在工业质检、安防监控、医疗影像等领域都有广泛应用。将两者结合,可以打造出…...
论文阅读:arxiv 2026 Uncovering Security Threats and Architecting Defenses in Autonomous Agents: A Case S
总目录 大模型安全研究论文整理 2026年版:https://blog.csdn.net/WhiffeYF/article/details/159047894 Uncovering Security Threats and Architecting Defenses in Autonomous Agents: A Case Study of OpenClaw https://arxiv.org/abs/2603.12644 该论文《Uncov…...
如何高效使用Dism++:Windows系统优化与管理的终极指南
如何高效使用Dism:Windows系统优化与管理的终极指南 【免费下载链接】Dism-Multi-language Dism Multi-language Support & BUG Report 项目地址: https://gitcode.com/gh_mirrors/di/Dism-Multi-language Dism是一款功能强大的Windows系统优化工具&…...
DIY电源设计避坑指南:为什么你的滤波电路总达不到理想效果?
DIY电源设计避坑指南:为什么你的滤波电路总达不到理想效果? 在创客工作坊或学生电子竞赛中,一个稳定可靠的电源往往是项目成功的基础。但许多爱好者都会遇到这样的困扰:明明按照教科书设计了滤波电路,示波器上的纹波却…...
CATIA 转 SolidWorks 高效转换技巧:迪威模型网实战解析
1. CATIA与SolidWorks转换的必要性 在工程设计领域,CATIA和SolidWorks就像两个说着不同方言的工程师。我见过太多团队因为文件格式不通用而耽误进度,特别是当汽车供应商收到主机厂的CATIA文件时,经常需要熬夜加班做格式转换。迪威模型网的在线…...
