news 2026/3/26 21:51:25

GESP2025年12月认证C++六级真题与解析(编程题1 (路径覆盖))

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP2025年12月认证C++六级真题与解析(编程题1 (路径覆盖))

一、先看原题:


二、题目解析:

1、先把题目“翻译成白话”

📘 原题意思(白话版)

有一棵🌳:

  • n 个节点

  • 有一个根节点

  • 每个节点一开始都是白色

现在你要做一件事:

👉把一些节点染成黑色(要花钱)

规则是:

从任意一个叶子节点走到根节点的那条路上,至少要有 1 个黑色节点

每个节点染黑:

  • 都有一个花费 💰

目标是:

🎯在满足规则的前提下,让总花费最小


2、什么是“叶子到根的路径”?

🌳 举个小树例子

1 / \ 2 3 / 4
  • 根:1

  • 叶子:3、4

🛣 路径有哪些?

  • 4 → 2 → 1

  • 3 → 1

👉每一条路径上,都要至少有 1 个黑点


3、最关键的一句“算法思想”

对每一个节点,我们只关心:
是“自己染黑便宜”,还是“让孩子们自己解决更便宜”。

这就是这题的核心!


4、一步一步拆解思路(非常重要)

🔍 从哪开始想?

👉从叶子开始


① 如果我是叶子节点

  • 我的后面没有节点

  • 那我的选择是:先要染黑自己

✅ 花费 =c[i]


② 如果我不是叶子节点

假设我有孩子 👶👶

  • 每个孩子都会算出:

    • “为了保证下面路径安全,最少要花多少钱”

现在我有两个选择:

✨ 选择 1:我自己染黑
  • 花费 =c[i]

  • 所有孩子路径都安全了

✨ 选择 2:我不染
  • 那就每个孩子自己保证

  • 花费 = 所有孩子的最小花费之和

👉我选更便宜的那个!


六、这其实就是:树形 DP

形象比喻 👇

每个节点都会交一张“最省钱报告单”给爸爸
爸爸看看:

  • 自己掏钱便宜

  • 还是孩子们一起掏钱便宜


七、结合样例走一遍(非常关键)

📌 样例 1

4 1 2 3 5 6 2 3

解释:

  • 父节点关系:

    • 2 的父亲是 1

    • 3 的父亲是 2

    • 4 的父亲是 3

形成一条链

1 | 2 | 3 | 4
  • 花费:

    • 1: 5

    • 2: 6

    • 3: 2

    • 4: 3


🧠 从叶子往上算

节点 4(叶子)
  • 必须染

  • 花费 = 3

节点 3
  • 自己染:2

  • 让 4 解决:3
    👉 选 2

节点 2
  • 自己染:6

  • 让 3 解决:2
    👉 选 2

节点 1
  • 自己染:5

  • 让 2 解决:2
    👉 选 2

✅ 最终答案:2


八、参考程序(详细注释)

#include <iostream> using namespace std; const int N = 100005; int n; int parent[N]; // parent[i]:i 的父节点 int cost[N]; // cost[i]:把 i 染黑要花多少钱 int childCnt[N]; // childCnt[i]:i 有几个孩子 long long dp[N]; // dp[i]:保证“从 i 往下的路径”安全的最小花费 int main() { cin >> n; // 读父节点信息 for (int i = 2; i <= n; i++) { cin >> parent[i]; childCnt[parent[i]]++; // 统计孩子数量 } // 读染色花费 for (int i = 1; i <= n; i++) { cin >> cost[i]; } // 从编号大的往小算(孩子先算,爸爸后算) for (int i = n; i >= 1; i--) { // 如果是叶子节点 if (childCnt[i] == 0) { dp[i] = cost[i]; // 只能自己染 } // 不管是不是叶子,都可以选择自己染 dp[i] = min(dp[i], (long long)cost[i]); // 把自己的最小花费加给爸爸 if (i != 1) { dp[parent[i]] += dp[i]; } } // 根节点的答案 cout << dp[1] << endl; return 0; }

九、一句话总结

🌳这道题的核心就是:
每个节点在想一件事:
“是我自己变黑省钱,
还是让孩子们一起变黑省钱?”

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/24 4:21:01

GLM-TTS支持哪些音频格式?WAV、MP3等输入兼容性说明

GLM-TTS音频格式兼容性深度解析&#xff1a;如何选择最佳输入实现高保真语音克隆 在当前AI语音生成技术迅猛发展的背景下&#xff0c;零样本语音克隆&#xff08;Zero-shot Voice Cloning&#xff09;正从实验室走向真实应用场景。GLM-TTS作为融合大语言模型架构与声学建模能力…

作者头像 李华
网站建设 2026/3/14 19:04:45

设备响应延迟高?,PHP物联网实时控制优化策略深度解读

第一章&#xff1a;设备响应延迟高&#xff1f;PHP物联网实时控制优化策略深度解读 在物联网系统中&#xff0c;设备响应延迟直接影响用户体验与系统稳定性。尽管PHP常被视为传统Web开发语言&#xff0c;但通过合理架构设计&#xff0c;它同样能胜任实时性要求较高的IoT控制场景…

作者头像 李华
网站建设 2026/3/18 10:09:26

PHP 8.7错误与异常有何不同:3分钟彻底搞懂新引擎底层逻辑

第一章&#xff1a;PHP 8.7错误与异常的核心变革PHP 8.7 在错误处理机制上进行了深度重构&#xff0c;显著提升了开发体验与运行时的稳定性。此次更新统一了错误与异常的底层模型&#xff0c;使开发者能够以更一致的方式捕获和响应程序异常。统一的错误异常体系 在 PHP 8.7 中&…

作者头像 李华
网站建设 2026/3/18 7:08:38

PHP 8.7异常处理实战,开发者必须掌握的7大核心技巧

第一章&#xff1a;PHP 8.7异常处理机制概述PHP 8.7 在异常处理机制上进行了进一步优化&#xff0c;增强了错误的可追踪性与类型安全性。该版本延续了自 PHP 7 引入的统一异常体系&#xff0c;并对部分核心类的抛出行为进行了规范化&#xff0c;使开发人员能更精确地捕获和处理…

作者头像 李华
网站建设 2026/3/26 20:24:58

清华镜像软件列表查找GLM-TTS所需依赖包版本

清华镜像软件列表查找GLM-TTS所需依赖包版本 在语音合成技术快速演进的今天&#xff0c;零样本语音克隆、情感迁移和高保真TTS系统正从实验室走向实际产品。智谱AI推出的GLM-TTS便是其中的典型代表——它不仅能基于几秒音频还原说话人音色&#xff0c;还能精准控制多音字发音与…

作者头像 李华
网站建设 2026/3/22 5:39:43

PHP微服务架构中的熔断器模式(从入门到生产级落地)

第一章&#xff1a;PHP微服务架构中熔断器模式概述在构建高可用的PHP微服务系统时&#xff0c;服务间的依赖调用可能因网络延迟、服务宕机或资源过载而引发连锁故障。熔断器模式&#xff08;Circuit Breaker Pattern&#xff09;作为一种容错机制&#xff0c;能够有效防止此类故…

作者头像 李华