【2024最新华为OD-C卷试题汇总】传递悄悄话的最长时间(100分) - 三语言AC题解(Python/Java/Cpp)

news2025/3/17 11:23:55

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

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

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

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

文章目录

  • 前言
    • 🧭 机试备考指南
    • 💊 传递悄悄话的最长时间
      • 题目描述
      • 输入格式
      • 输出格式
      • 样例输入
      • 样例输出
      • 数据范围
      • 题解
      • 参考代码
    • 🍓 AC代码截图 ✅

前言

🧭 机试备考指南

  • 华为OD的题库大半年跟新一次,也就是说,一旦跟新,那么本年用的题目就是从该题库种选题,大概有100~200道左右

  • 最近考试换为C/D卷,C/D卷题库是一样的,D卷为双机位监控,某些外包公司应聘的为D卷。

  • 为此清隆帮大家搜集并整理了C卷的题库,后续会由清隆的ACM银牌团队将题目整理后搬上OJ,支持在线评测

💊 传递悄悄话的最长时间

题目描述

在一个大家庭的聚会上,家庭成员站在由二叉树形式组织的位置上。每个位置上有一人,每个人之间的连接代表一条传递悄悄话的路径,且这条路径上有一个时间消耗。现在,根位置的K小姐想将一个悄悄话传递给所有人。每个连接的数字表示K小姐传递悄悄话给该节点的人所需额外时间。请计算使得所有家庭成员都听到这个悄悄话所需的最长时间。

输入格式

输入包含一行,由空格隔开的整数序列。这个序列以层序遍历的方式描述了一个二叉树,其中 -1 表示空节点。序列的第一个数字是根节点,表示从K小姐开始的时间为0。

输出格式

输出一个整数,表示所有节点都接收到悄悄话的最长时间。

样例输入

0 9 20 -1 -1 15 7 -1 -1 -1 -1 3 2

样例输出

38

数据范围

输入的二叉树节点个数不超过 1000 1000 1000,时间都是非负整数,不超过 100 100 100

题解

这个题目的核心是对二叉树进行遍历,并计算从根节点到每一个节点的路径时间。由于使用的是层序遍历的输入方式,我们可以使用队列来帮助我们构造这个二叉树,并同时计算从根节点到其他节点的时间。我们需要追踪的是从根节点到每个节点的累计时间,最终输出最大的那个时间,即为所有人都接收到悄悄话的最长时间。

参考代码

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

int main() {
    vector<int> input;
    int tmp;
    while (cin >> tmp) {
        input.push_back(tmp);
    }

    if (input.empty() || input[0] == -1) {
        cout << "0" << endl;
        return 0;
    }

    queue<pair<int, int>> q; // pair<index, time>
    q.push({0, input[0]});
    int maxTime = 0;

    while (!q.empty()) {
        auto [index, currTime] = q.front();
        q.pop();
        maxTime = max(maxTime, currTime);

        int leftChildIndex = 2 * index + 1;
        int rightChildIndex = 2 * index + 2;

        if (leftChildIndex < input.size() && input[leftChildIndex] != -1) {
            q.push({leftChildIndex, currTime + input[leftChildIndex]});
        }
        if (rightChildIndex < input.size() && input[rightChildIndex] != -1) {
            q.push({rightChildIndex, currTime + input[rightChildIndex]});
        }
    }

    cout << maxTime << endl;
    return 0;
}
  • Python
from queue import Queue

input_str = input().split()
input = [int(x) if x != '-1' else -1 for x in input_str]

if not input or input[0] == -1:
    print("0")
    exit()

q = Queue()
q.put((0, input[0]))
max_time = 0

while not q.empty():
    index, curr_time = q.get()
    max_time = max(max_time, curr_time)

    left_child_index = 2 * index + 1
    right_child_index = 2 * index + 2

    if left_child_index < len(input) and input[left_child_index] != -1:
        q.put((left_child_index, curr_time + input[left_child_index]))
    if right_child_index < len(input) and input[right_child_index] != -1:
        q.put((right_child_index, curr_time + input[right_child_index]))

print(max_time)

  • Java
import java.util.LinkedList;
import java.util.Queue;
import java.util.Scanner;

public class MaxSumPath {
    public static void main(String[] args) {
        Scanner scanner = new Scanner(System.in);
        String[] inputStr = scanner.nextLine().split(" ");
        int[] input = new int[inputStr.length];
        for (int i = 0; i < inputStr.length; i++) {
            input[i] = Integer.parseInt(inputStr[i]);
        }

        if (input.length == 0 || input[0] == -1) {
            System.out.println("0");
            return;
        }

        Queue<Pair> queue = new LinkedList<>();
        queue.add(new Pair(0, input[0]));
        int maxTime = 0;

        while (!queue.isEmpty()) {
            Pair pair = queue.poll();
            int index = pair.index;
            int currTime = pair.time;
            maxTime = Math.max(maxTime, currTime);

            int leftChildIndex = 2 * index + 1;
            int rightChildIndex = 2 * index + 2;

            if (leftChildIndex < input.length && input[leftChildIndex] != -1) {
                queue.add(new Pair(leftChildIndex, currTime + input[leftChildIndex]));
            }
            if (rightChildIndex < input.length && input[rightChildIndex] != -1) {
                queue.add(new Pair(rightChildIndex, currTime + input[rightChildIndex]));
            }
        }

        System.out.println(maxTime);
    }

    static class Pair {
        int index;
        int time;

        Pair(int index, int time) {
            this.index = index;
            this.time = time;
        }
    }
}

🍓 AC代码截图 ✅

  • Python
    在这里插入图片描述

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

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

相关文章

3.Redis之Redis的环境搭建redis客户端介绍

1.版本的选取 安装 Redis&#xff1a;Redis 5 系列~~ 在 Linux 中进行安装~~ Redis 官方是不支持 Windows 版本的~~ 微软维护了一个 Windows 版本的 Redis 分支 Centos和Ubuntu.Docker 2.如何进行安装&#xff1f;&#xff1f;&#xff1f; 1.ubuntu 2.centos yum instal…

欧拉函数、快速幂、扩展欧几里得算法、中国剩余定理和高斯消元

欧拉函数 给定 n 个正整数 ai&#xff0c;请你求出每个数的欧拉函数。 欧拉函数的定义1∼N 中与 N 互质的数的个数被称为欧拉函数&#xff0c;记为 ϕ(N)。 若在算数基本定理中&#xff0c;Np1a11p2a2…pmm&#xff0c;则&#xff1a;ϕ(N) Np1−1/p1p2−1/p2…pm−1/pm 输…

最热门好用骨传导耳机推荐!!分享六大实用选购技巧助你挑选!

耳机基本是每人人手一台&#xff0c;不管是在地铁上还是在公交上&#xff0c;都可以看到很多人戴着耳机度过空余的时光&#xff0c;甚至现在人们在耳机的选择方面更加偏向于骨传导耳机&#xff0c;开放耳道的奇特设计在户外佩戴的时候可以更好的感知到周围的环境音&#xff0c;…

视频汇聚平台LntonCVS视频监控系统前端错误日志记录及Debug模式详细讲解

LntonCVS作为一种支持GB28181标准的流媒体服务平台&#xff0c;旨在提供一个能够整合不同厂商设备、便于管理和扩展的解决方案&#xff0c;以适应日益复杂的视频监控环境。通过实现设备的统一管理和流媒体的高效传输&#xff0c;LntonCVS帮助构建更加灵活和强大的视频监控系统。…

记录docker ps查找指定容器的几个命令

1.docker ps | grep registry 查询包含registry的容器 2.docker ps | grep -E "reigistry\s" 开启正则匹配模式&#xff0c;匹配registry后面为空格的容器&#xff0c;若是匹配一整行可以这样写docker ps | grep -E "^([0-9a-f]{12})\sregistry\s.*" 这…

中药垂直大模型汇总

中药垂直大模型汇总 2023 ShenNong-TCM Paper: ShenNong-TCM: A Traditional Chinese Medicine Large Language Model Data: https://huggingface.co/datasets/michaelwzhu/ShenNong_TCM_Dataset Code:https://github.com/michael-wzhu/ShenNong-TCM-LLM ShenNong-TCM由华东…

开关电源AC-DC(15W 3-18V可调)

简介: 该模块使用PI的TNY268PN电源芯片制作的开关电源,实现最大功率15W 3-18V可调输出(更改反馈电阻)隔离式反激电源; 简介:该模块使用PI的TNY268PN电源芯片制作的开关电源,实现最大功率15W 3-18V可调输出(更改反馈电阻,现电路图输出5V)隔离式反激电源; 一、产品简…

全域运营是本地生活服务的新模式吗?

最近&#xff0c;本地生活赛道又出现了一个新的说法&#xff0c;即全域运营是本地生活的下半场。事实上&#xff0c;这一论断并非空穴来风&#xff0c;而是有真凭实据。 作为多家互联网大厂重点布局的业务板块&#xff0c;本地生活的火爆程度早已有目共睹。根据多家互联网大厂…

国赛练习(1)

Unzip 软连接 软连接是linux中一个常用命令&#xff0c;它的功能是为某一个文件在另外一个位置建立一个同步的链接。换句话说&#xff0c;也可以理解成Windows中的快捷方式 注意&#xff1a;在创建软连接的文件的所有目录下不能有重名的文件 打开环境&#xff0c;是文件上传&am…

在Linux上面部署ELK

注明&#xff1a;一下的软件需要自己准备 一、准备环境&#xff1a; 1.两台elasticsearch主机4G内存 2.两台elasticsearch配置主机名node1和node2(可以省略) #vim /etc/hostname #reboot 3. 两台elasticsearch配置hosts文件 #vim /etc/hosts 192.168.1.1 node1 192…

测试基础05:软件测试的分类

课程大纲 1、两种架构&#xff08;Architecture&#xff09; 1.1、B/S&#xff08;Browser/Server&#xff09; 浏览器服务器架构&#xff08;大体3步&#xff09;&#xff1a;用户通过浏览器向服务器发出请求&#xff0c;服务器处理请求&#xff0c;将结果通过网络返回到用户…

【论文阅读】AID(ICCV‘23)

paper:https://arxiv.org/abs/2310.05666 code:https://github.com/YilongLv/AID Anchor-Intermediate Detector: Decoupling and Coupling Bounding Boxes for Accurate Object Detection

F.费用报销【蓝桥杯】/01背包

费用报销 01背包 思路&#xff1a;f[i][j]表示前i个票据在容量为j的背包中能占的最大值。 #include<iostream> #include<algorithm> using namespace std; int day[13]{0,31,28,31,30,31,30,31,31,30,31,30,31}; int dp[1005][5005]; int s[13]; int last[1005];…

Dockerfile使用

1.Dockerfile是什么 官网地址 https://docs.docker.com/reference/dockerfile/概念 是什么 Dockerfile 是用于构建 Docker 镜像的文本文件&#xff0c;它包含一系列的指令&#xff08;instructions&#xff09;和参数&#xff0c;用于描述如何构建和配置镜像。 Dockerfile 是…

aws sqs基础概念和队列参数解析

分布式队列的组成部分 生产者&#xff0c;向队列发送消息的组件消费者&#xff0c;接受队列消息队列&#xff0c;多个sqs服务器存储冗余存储消息 sqs自动删除超过最大留存时间的消息&#xff08;默认4天&#xff09;&#xff0c;可以通过SetQueueAttributes调整为&#xff08…

Java语言-面向对象程序设计-自定义Date类

在Java中&#xff0c;不建议直接自定义Date类&#xff0c;因为java.util.Date和java.util.Calendar类已经提供了处理日期和时间的基本功能&#xff0c;可以使用SimpleDateFormat类格式化日期&#xff08;较常用的方式&#xff09;等。 这里将自定义封装一个Date类&#xff0c;用…

Spring框架学习笔记(五):JdbcTemplate 和 声明式事务

基本介绍&#xff1a;通过 Spring 框架可以配置数据源&#xff0c;从而完成对数据表的操作。JdbcTemplate 是 Spring 提供的访问数据库的技术。将 JDBC 的常用操作封装为模板方法 1 JdbcTemplate 使用前需进行如下配置 1.1 在maven项目的pom文件加入以下依赖 <dependencies…

通过Wirtinger流进行相位恢复:理论与算法

文章目录 1. 简介2. 算法描述2.1 初始化(Initialization)2.2 迭代更新(Iterative Updates)2.3 学习率调整&#xff08;Learning Rate Adjustment&#xff09; 3. 代码实现3.1 一维信号测试 &#xff08;Gaussian model&#xff09;3.2 一维信号测试 &#xff08;Coded diffract…

牛皮!亚信安全《2024国家级攻防演练100+必修高危漏洞合集》.pdf

上次分享了2023攻防演练高危漏洞&#xff0c;获得了很多粉丝的好评。 今天再分享一份由亚信安全服务团队结合自身的“外部攻击面管理”服务能力和专业的红队能力&#xff0c;最新发布的《2024攻防演练必修高危漏洞合集》&#xff0c;一共108页&#xff0c;非常详细&#xff0c…

存储+调优:存储-memcached

存储调优&#xff1a;存储-memcached 什么是memcached? 高性能的分布式内存缓存服务器。通过缓存数据库的查询结果&#xff0c;减少数据库访问次数&#xff0c;以提高动态Web应用的速度、提高可扩展性。 在memcached中存什么&#xff1f; 尽快被保存 访问频率高 1.数据保…