news 2026/5/11 15:19:01

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/5/10 1:20:24

xtb量子化学计算软件:突破传统计算瓶颈的科研利器

在量子化学计算领域&#xff0c;你是否曾因计算速度太慢而错过重要发现&#xff1f;是否因计算资源不足而无法研究大分子体系&#xff1f;xtb半经验扩展紧束缚程序包正是为你解决这些挑战的强大工具。作为一个高效准确的量子化学计算软件&#xff0c;xtb在保持专业精度的同时大…

作者头像 李华
网站建设 2026/5/10 3:40:31

终极指南:如何用文本快速创建专业图表

终极指南&#xff1a;如何用文本快速创建专业图表 【免费下载链接】nodeppt This is probably the best web presentation tool so far! 项目地址: https://gitcode.com/gh_mirrors/no/nodeppt 还在为制作演示文稿中的图表而烦恼吗&#xff1f;nodeppt图表制作工具让你用…

作者头像 李华
网站建设 2026/5/12 7:06:00

如何快速部署AI大模型:CPU环境下的完整实践指南

如何快速部署AI大模型&#xff1a;CPU环境下的完整实践指南 【免费下载链接】T-pro-it-2.0-GGUF 项目地址: https://ai.gitcode.com/hf_mirrors/t-tech/T-pro-it-2.0-GGUF 在人工智能技术飞速发展的今天&#xff0c;本地部署大语言模型已成为技术爱好者和开发者的重要需…

作者头像 李华
网站建设 2026/5/9 15:04:19

Centrifuge实战:构建高可用实时消息系统的完整指南

Centrifuge实战&#xff1a;构建高可用实时消息系统的完整指南 【免费下载链接】centrifuge Real-time messaging library for Go. The simplest way to add feature-rich and scalable WebSocket support to your application. The core of Centrifugo server. 项目地址: ht…

作者头像 李华
网站建设 2026/5/10 4:47:16

VERT文件转换工具终极指南:从零开始掌握本地化格式转换

VERT文件转换工具终极指南&#xff1a;从零开始掌握本地化格式转换 【免费下载链接】VERT The next-generation file converter. Open source, fully local* and free forever. 项目地址: https://gitcode.com/gh_mirrors/ve/VERT 在数字文件格式日益丰富的今天&#xf…

作者头像 李华
网站建设 2026/5/10 7:34:38

Open-AutoGLM移动端落地难?资深工程师亲授手机端高效部署秘诀

第一章&#xff1a;Open-AutoGLM移动端落地难&#xff1f;资深工程师亲授手机端高效部署秘诀在将 Open-AutoGLM 这类大型语言模型部署至移动端时&#xff0c;许多开发者面临推理延迟高、内存占用大和设备兼容性差等问题。然而&#xff0c;通过合理的模型压缩与运行时优化策略&a…

作者头像 李华