news 2026/6/10 6:52:41

算法竞赛备考冲刺必刷题(C++) | 洛谷 P2052 道路修建

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
算法竞赛备考冲刺必刷题(C++) | 洛谷 P2052 道路修建

本文分享的必刷题目是从蓝桥云课洛谷AcWing等知名刷题平台精心挑选而来,并结合各平台提供的算法标签和难度等级进行了系统分类。题目涵盖了从基础到进阶的多种算法和数据结构,旨在为不同阶段的编程学习者提供一条清晰、平稳的学习提升路径。

欢迎大家订阅我的专栏:算法题解:C++与Python实现!

附上汇总贴:算法竞赛备考冲刺必刷题(C++) | 汇总


【题目来源】

洛谷:[P2052 NOI2011] 道路修建 - 洛谷

【题目描述】

在 W 星球上有n nn个国家。为了各自国家的经济发展,他们决定在各个国家之间建设双向道路使得国家之间连通。但是每个国家的国王都很吝啬,他们只愿意修建恰好n − 1 n - 1n1条双向道路。

每条道路的修建都要付出一定的费用,这个费用等于道路长度乘以道路两端 的国家个数之差的绝对值。例如,在下图中,虚线所示道路两端分别有2 22个、4 44个国家,如果该道路长度为1 11,则费用为1 × ∣ 2 − 4 ∣ = 2 1×|2 - 4|=21×∣24∣=2。图中圆圈里的数字表示国家的编号。

由于国家的数量十分庞大,道路的建造方案有很多种,同时每种方案的修建费用难以用人工计算,国王们决定找人设计一个软件,对于给定的建造方案,计算出所需要的费用。请你帮助国王们设计一个这样的软件。

【输入】

输入的第一行包含一个整数n nn,表示 W 星球上的国家的数量,国家从1 11n nn编号。

接下来n − 1 n - 1n1行描述道路建设情况,其中第i ii行包含三个整数a i a_iaib i b_ibic i c_ici,表示第i ii条双向道路修建在a i a_iaib i b_ibi两个国家之间,长度为c i c_ici

【输出】

输出一个整数,表示修建所有道路所需要的总费用。

【输入样例】

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

【输出样例】

20

【算法标签】

《洛谷 P2052 道路修建》 #树形数据结构# #广度优先搜索BFS# #深度优先搜索DFS# #NOI# #2011#

【代码详解】

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglong// 将int定义为long long类型constintN=1000005,M=N*2;// N: 最大节点数, M: 最大边数(双向边)intn;// 节点数intcnt[N];// cnt[u]: 以u为根的子树大小intans;// 最终答案inth[N];// 邻接表头inte[M];// 边的终点intw[M];// 边的权重intne[M];// 下一条边intidx;// 边计数器// 添加边voidadd(inta,intb,intc){e[idx]=b;// 存储终点w[idx]=c;// 存储边权ne[idx]=h[a];// 插入到链表头部h[a]=idx++;// 更新头指针}// 第一次DFS:计算每个节点的子树大小voiddfs(intu,intfa){cnt[u]=1;// 初始化,包含自己// 遍历所有邻接点for(inti=h[u];i!=-1;i=ne[i]){intj=e[i];// 子节点if(j==fa)continue;// 跳过父节点dfs(j,u);// 递归处理子节点cnt[u]+=cnt[j];// 累加子树的节点数}}// 第二次DFS:计算总贡献voiddfs2(intu,intfa){// 遍历所有邻接点for(inti=h[u];i!=-1;i=ne[i]){intj=e[i];// 子节点if(j==fa)continue;// 跳过父节点// 计算边(u, j)的贡献// cnt[j]: 子树j的节点数// n - cnt[j]: 另一部分的节点数// 两部分的差值乘以边权ans+=w[i]*abs(cnt[j]-(n-cnt[j]));// 递归处理子节点dfs2(j,u);}}signedmain()// 因为使用了#define int long long,所以用signed main{// 初始化邻接表memset(h,-1,sizeof(h));// 输入节点数cin>>n;// 输入n-1条边for(inti=1;i<n;i++){intu,v,w;// 使用scanf加速输入scanf("%d%d%d",&u,&v,&w);// 添加双向边add(u,v,w);add(v,u,w);}// 第一次DFS:计算子树大小dfs(1,0);// 第二次DFS:计算总贡献dfs2(1,0);// 输出结果cout<<ans<<endl;return0;}

【运行结果】

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

低成本GPU运行大模型?Image-to-Video显存优化秘籍

低成本GPU运行大模型&#xff1f;Image-to-Video显存优化秘籍 引言&#xff1a;在有限资源下释放动态生成潜力 随着多模态生成技术的飞速发展&#xff0c;图像转视频&#xff08;Image-to-Video, I2V&#xff09; 已成为AIGC领域的新热点。然而&#xff0c;主流I2V模型如I2VGen…

作者头像 李华
网站建设 2026/6/10 15:09:36

Sambert-HifiGan在智能车载中的应用:自然语音导航

Sambert-HifiGan在智能车载中的应用&#xff1a;自然语音导航 背景与挑战&#xff1a;从机械播报到情感化语音交互 在传统车载导航系统中&#xff0c;语音提示往往以“前方500米右转”这类机械化、无情感的语调呈现。这种单一音色、固定语速、缺乏语境感知的语音合成方式&#…

作者头像 李华
网站建设 2026/6/9 22:28:19

如何用Sambert-HifiGan打造智能语音备忘录?

如何用Sambert-HifiGan打造智能语音备忘录&#xff1f; &#x1f3af; 业务场景与痛点分析 在现代个人效率工具中&#xff0c;语音备忘录正逐渐取代传统的文字记录方式。无论是会议纪要、灵感捕捉&#xff0c;还是日程提醒&#xff0c;语音形式更自然、录入更快。然而&#xff…

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

谁说老实人赚不到钱?Claude用一张3500亿的支票打脸OpenAI

出走5年&#xff0c;估值翻倍&#xff01;曾被嘲笑「太保守」的Anthropic&#xff0c;正凭3500亿美元身价硬刚OpenAI。看理想主义者如何靠极致安全与Coding神技&#xff0c;在ARR激增的复仇路上&#xff0c;终结Sam Altman的霸权&#xff01;2026开年最震撼的消息&#xff01;A…

作者头像 李华
网站建设 2026/6/9 23:56:02

【延续IEEE(有ISBN号),见刊检索稳定 | 往届平均会后3-4个月左右完成检索 | 武汉工程大学主办 | 大咖嘉宾演讲】第六届消费电子与计算机工程国际学术会议(ICCECE 2026)

第六届消费电子与计算机工程国际学术会议&#xff08;ICCECE 2026&#xff09; 2026 6th International Conference on Consumer Electronics and Computer Engineering 线下召开时间&#xff1a;2026年1月23-25日 大会地点&#xff1a;中国-武汉-武汉工程大学&#xff08;流…

作者头像 李华
网站建设 2026/6/10 5:58:24

如何用Sambert-HifiGan实现动态情感语音播报

如何用Sambert-HifiGan实现动态情感语音播报 引言&#xff1a;中文多情感语音合成的现实需求 在智能客服、有声阅读、虚拟主播等应用场景中&#xff0c;单一语调的语音播报已无法满足用户对自然性和情感表达的需求。传统TTS&#xff08;Text-to-Speech&#xff09;系统往往输出…

作者头像 李华