news 2026/4/18 10:32:11

GESP认证C++编程真题解析 | P11378 [GESP202412 七级] 燃烧

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
GESP认证C++编程真题解析 | P11378 [GESP202412 七级] 燃烧

​欢迎大家订阅我的专栏:算法题解:C++与Python实现!
本专栏旨在帮助大家从基础到进阶 ,逐步提升编程能力,助力信息学竞赛备战!

专栏特色
1.经典算法练习:根据信息学竞赛大纲,精心挑选经典算法题目,提供清晰的代码实现与详细指导,帮助您夯实算法基础。
2.系统化学习路径:按照算法类别和难度分级,从基础到进阶,循序渐进,帮助您全面提升编程能力与算法思维。

适合人群:

  • 准备参加蓝桥杯、GESP、CSP-J、CSP-S等信息学竞赛的学生
  • 希望系统学习C++/Python编程的初学者
  • 想要提升算法与编程能力的编程爱好者

附上汇总帖:GESP认证C++编程真题解析 | 汇总


【题目来源】

洛谷:P11378 [GESP202412 七级] 燃烧 - 洛谷

【题目描述】

小杨有一棵包含n nn个节点的树,其中节点的编号从1 11n nn。节点i ii的权值为a i a_iai

小杨可以选择一个初始节点引燃,每个燃烧的节点会将其相邻节点中权值严格小于自身权值的节点也引燃,火焰会在节点间扩散直到不会有新的节点被引燃。

小杨想知道在合理选择初始节点的情况下,最多可以燃烧多少个节点。

【输入】

第一行包含一个正整数n nn,代表节点数量。

第二行包含n nn个正整数a 1 , a 2 , … , a n a_1,a_2,\dots,a_na1,a2,,an,代表节点权值。

之后n − 1 n-1n1行,每行包含两个正整数u i , v i u_i,v_iui,vi,代表存在一条连接节点u i u_iuiv i v_ivi的边。

【输出】

输出一个正整数,代表最多燃烧的节点个数。

【输入样例】

5 6 2 3 4 5 1 2 2 3 2 5 1 4

【输出样例】

3

【算法标签】

《洛谷 P11378 燃烧》 #动态规划DP# #树形DP# #树的遍历# #GESP# #2024#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;constintN=100005;// 最大节点数constintM=N*2;// 无向图边数要×2intn;// 节点数量inta[N];// a[i]: 节点i的值intdp[N];// dp[i]: 以节点i为起点的最长递降路径长度intans;// 全局答案,最长路径长度inth[N],e[M],ne[M],idx;// 邻接表存储图// 添加一条a到b的无向边voidadd(inta,intb){e[idx]=b;// 存储终点ne[idx]=h[a];// 头插法h[a]=idx++;// 更新头节点}// 深度优先搜索,返回以u为起点的最长递降路径长度intdfs(intu){// 记忆化:如果已经计算过,直接返回结果if(dp[u]!=-1){returndp[u];}// 至少包含自己,所以初始长度为1intres=1;// 遍历u的所有邻居节点for(inti=h[u];i!=-1;i=ne[i]){intj=e[i];// 邻居节点j// 如果节点u的值大于邻居节点j的值,说明可以向下延伸if(a[u]>a[j]){// 递归计算以j为起点的路径长度// 加上u节点自身res+=dfs(j);}}// 记忆化存储结果dp[u]=res;returndp[u];}intmain(){cin>>n;// 输入节点数// 初始化邻接表memset(h,-1,sizeof(h));// 输入每个节点的值for(inti=1;i<=n;i++){cin>>a[i];}// 输入n-1条边,构建树for(inti=1;i<n;i++){intu,v;cin>>u>>v;add(u,v);// 添加u->v的边add(v,u);// 添加v->u的边,因为是无向图}// 初始化dp数组为-1,表示未计算memset(dp,-1,sizeof(dp));// 以每个节点为起点计算最长递降路径ans=0;// 初始化答案为0for(inti=1;i<=n;i++){ans=max(ans,dfs(i));}// 输出最长递降路径长度cout<<ans<<endl;return0;}

【运行结果】

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

melonDS模拟器终极使用指南:快速上手NDS游戏模拟

想要在电脑上重温经典的任天堂DS游戏&#xff1f;melonDS模拟器是你的不二选择&#xff01;这款开源模拟器不仅运行速度快&#xff0c;还能提供高度准确的游戏体验。本指南将带你从零开始&#xff0c;快速掌握melonDS的各项功能&#xff0c;让你轻松畅玩NDS游戏世界。 【免费下…

作者头像 李华
网站建设 2026/4/18 2:01:11

ANSYS Fluent官方教程:从入门到精通的全方位学习指南

ANSYS Fluent官方教程&#xff1a;从入门到精通的全方位学习指南 【免费下载链接】ANSYSFluent官方教程下载 ANSYS Fluent是一款功能强大的流体力学仿真软件&#xff0c;广泛应用于工程和科研领域。为帮助用户更好地掌握该软件&#xff0c;我们提供了《ANSYS_Fluent_Tutorial_G…

作者头像 李华
网站建设 2026/4/17 2:07:20

STM32外部SDRAM提升LVGL运行效率详解

如何用外部SDRAM让STM32上的LVGL“飞”起来&#xff1f;你有没有遇到过这样的情况&#xff1a;在STM32上跑LVGL&#xff0c;界面稍微复杂一点&#xff0c;动画就开始卡顿&#xff1f;按钮一多就malloc失败&#xff1f;滑动列表像幻灯片一样一顿一顿的&#xff1f;别急&#xff…

作者头像 李华
网站建设 2026/4/18 2:04:05

JLink驱动安装深度剖析:底层通信机制与驱动签名

JLink驱动安装深度剖析&#xff1a;从通信协议到签名机制的实战解密在嵌入式开发的世界里&#xff0c;调试器是连接代码与硬件的“听诊器”。而提到高性能调试探针&#xff0c;J-Link几乎成了行业标准。它支持ARM Cortex系列芯片的JTAG/SWD调试&#xff0c;下载速度快、稳定性高…

作者头像 李华
网站建设 2026/4/18 2:03:26

YOLO目标检测模型训练时如何初始化权重?GPU加速预训练

YOLO目标检测模型训练时如何初始化权重&#xff1f;GPU加速预训练 在工业质检线上&#xff0c;一台搭载YOLOv8的视觉系统正以每秒60帧的速度识别PCB板上的微小焊点缺陷&#xff1b;与此同时&#xff0c;在数百公里外的数据中心&#xff0c;一块A100 GPU集群正在对下一代YOLO模型…

作者头像 李华
网站建设 2026/4/18 2:02:52

如何快速配置Rime输入法:東風破plum新手完整指南

如何快速配置Rime输入法&#xff1a;東風破plum新手完整指南 【免费下载链接】plum 東風破 /plum/: Rime configuration manager and input schema repository 项目地址: https://gitcode.com/gh_mirrors/pl/plum 想要打造完全个性化的中文输入环境吗&#xff1f;東風破…

作者头像 李华