当前位置: 首页 > news >正文

题解:洛谷 P1351 [NOIP 2014 提高组] 联合权值

【题目来源】

洛谷:[P1351 NOIP 2014 提高组] 联合权值 - 洛谷

【题目描述】

无向连通图 \(G\)\(n\) 个点,\(n−1\) 条边。点从 \(1\)\(n\) 依次编号,编号为 \(i\) 的点的权值为 \(W_i\),每条边的长度均为 \(1\)。图上两点 \((u,v)\) 的距离定义为 \(u\) 点到 \(v\) 点的最短距离。对于图 \(G\) 上的点对 \((u,v)\),若它们的距离为 \(2\),则它们之间会产生 \(W_v×W_u\) 的联合权值。

请问图 \(G\) 上所有可产生联合权值的有序点对中,联合权值最大的是多少?所有联合权值之和是多少?

【输入】

第一行包含 \(1\) 个整数 \(n\)

接下来 \(n−1\) 行,每行包含 \(2\) 个用空格隔开的正整数 \(u,v\),表示编号为 \(u\) 和编号为 \(v\) 的点之间有边相连。

最后 \(1\) 行,包含 \(n\) 个正整数,每两个正整数之间用一个空格隔开,其中第 \(i\) 个整数表示图 \(G\) 上编号为 \(i\) 的点的权值为 \(W_i\)

【输出】

输出共 \(1\) 行,包含 \(2\) 个整数,之间用一个空格隔开,依次为图 \(G\) 上联合权值的最大值和所有联合权值之和。由于所有联合权值之和可能很大,输出它时要对 \(10007\) 取余。

【输入样例】

5  
1 2  
2 3
3 4  
4 5  
1 5 2 3 10 

【输出样例】

20 74

【算法标签】

《洛谷 P1351 联合权值》 #动态规划DP# #树形DP# #最近公共祖先LCA# #NOIP提高组# #2014#

【代码详解】

#include <bits/stdc++.h>
#define int long long
using namespace std;const int mod = 10007;  // 模数// 定义节点结构体
struct Node
{int w;              // 节点的权值vector<int> ve;     // 存储相邻节点vector<int> wi;     // 存储相邻节点的权值int sum;            // 相邻节点权值之和int sub;            // 相邻节点权值平方之和
} s[200005];            // 节点数组int n, u, v, maxx, ans;  // n: 节点数, u,v: 临时变量, maxx: 最大乘积, ans: 计算结果signed main()
{// 输入节点数cin >> n;// 构建树结构,输入n-1条边for (int i = 1; i < n; i++){cin >> u >> v;s[u].ve.push_back(v);  // 添加u的邻居vs[v].ve.push_back(u);  // 添加v的邻居u}// 输入每个节点的权值for (int i = 1; i <= n; i++){cin >> s[i].w;}// 处理每个节点for (int i = 1; i <= n; i++){// 如果邻居数少于2,跳过(无法形成乘积)if (s[i].ve.size() < 2){continue;}// 遍历所有邻居节点for (int j = 0; j < s[i].ve.size(); j++){v = s[i].ve[j];  // 获取邻居节点s[i].wi.push_back(s[v].w);  // 记录邻居节点的权值s[i].sum += s[v].w;         // 累加邻居节点权值之和s[i].sub += s[v].w * s[v].w;  // 累加邻居节点权值平方之和}// 计算并累加结果:使用公式 (sum)^2 - subans += s[i].sum * s[i].sum - s[i].sub;ans %= mod;  // 取模// 对邻居节点权值排序sort(s[i].wi.begin(), s[i].wi.end());int len = s[i].wi.size() - 1;// 更新最大乘积(最大的两个权值相乘)maxx = max(maxx, s[i].wi[len] * s[i].wi[len - 1]);}// 输出最大乘积和计算结果cout << maxx << " " << ans << endl;return 0;
}

【运行结果】

5  
1 2  
2 3
3 4  
4 5  
1 5 2 3 10 
20 74
http://www.jsqmd.com/news/394612/

相关文章:

  • 题解:洛谷 P5836 [USACO19DEC] Milk Visits S
  • YOLO26涨点改进 | 全网独家创新、注意力改进篇 | SCI一区 2025 | YOLO26引入MSCA多尺度稀疏交叉聚合,GCBAM分组注意力,助力遥感目标检测、图像分类任务有效涨点
  • 题解:洛谷 P3128 [USACO15DEC] Max Flow P
  • 题解:洛谷 P3379 【模板】最近公共祖先(LCA)
  • 题解:洛谷 P1395 会议
  • Claude Sonnet 4.6发布,操控计算机能力大幅提升,100万token上下文
  • 京东 e 卡闲置别浪费!可可收更安心,这样选最省心 - 可可收
  • 题解:洛谷 P3372 【模板】线段树 1
  • 研磨废水回用厂家怎么挑?2026年攻略来了,实验室废水处理/研磨废水回用(处理)/零排放清洗,研磨废水回用源头厂家找哪家 - 品牌推荐师
  • 题解:洛谷 P1099 [NOIP 2007 提高组] 树网的核
  • 闲置支付宝立减金别浪费!合规回收方法来了,新手也能轻松上手 - 可可收
  • Python3教程梳理
  • 题解:洛谷 P5908 猫猫和企鹅
  • 题解:洛谷 P5677 [GZOI2017] 配对统计
  • 2026沸石转轮一体机企业TOP榜:哪些品牌值得关注?催化燃烧/旋风除尘器/除尘器,沸石转轮制造厂家排行榜单 - 品牌推荐师
  • 瑞祥商联卡闲置不用?这样的合规回收方式,新手也能轻松上手 - 可可收
  • 2026年值得推荐的AVIF转WebP在线工具盘点(支持批量转换)
  • 微信立减金回收技巧:47%闲置率下,5招盘活你的“隐形财富” - 可可收
  • 2026年溴化锂中央空调选购指南:值得关注的公司,溴化锂冷水机组/二手溴化锂中央空调,溴化锂中央空调制造企业有哪些 - 品牌推荐师
  • PAM4相关概念
  • 2026年行业内评价高的调节阀厂商如何选,电液动盲板阀/蝶式止回阀/微阻缓闭止回阀/伸缩蝶阀,调节阀生产厂家哪家权威 - 品牌推荐师
  • 2026年中考体育训练新趋势:智慧体育制造企业深度解析,智能运动手环管理平台/握力测试仪,智慧体育生产厂家哪家好 - 品牌推荐师
  • 闲置分期乐购物额度用不上?教你安全高效回收,不浪费一分额度 - 可可收
  • 题解:洛谷 P1631 序列合并
  • 题解:洛谷 P4053 [JSOI2007] 建筑抢修
  • 题解:洛谷 P2161 [SHOI2009] 会场预约
  • 书籍-阿尔伯特·赫尔曼《亚洲古代地理学》
  • IndicEval A Bilingual Indian Educational Evaluation Framework for Large Language Models
  • 2026年上海有实力的宠物口腔医生口碑推荐榜,猫咪牙科/牙科专科/狗狗洗牙/狗口腔溃疡诊疗,宠物口腔医生性价比高的推荐 - 品牌推荐师
  • MultiCW A Large-Scale Balanced Benchmark Dataset for Training Robust Check-Worthiness Detection Mode