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

打卡信奥刷题(3506)用C++实现信奥题 P10842 【MX-J2-T3】Piggy and Trees

P10842 【MX-J2-T3】Piggy and Trees

题目背景

原题链接:https://oier.team/problems/J2D。

题目描述

给你一棵n nn个结点的树。

定义f ( u , v , i ) f(u, v, i)f(u,v,i)为,在所有满足† dis ( u , x ) + dis ( v , x ) = dis ( u , v ) ^\dagger\text{dis}(u, x) + \text{dis}(v, x) = \text{dis}(u, v)dis(u,x)+dis(v,x)=dis(u,v)的点x xx中,dis ( x , i ) \text{dis}(x, i)dis(x,i)的最小值。

∑ u = 1 n ∑ v = u + 1 n ∑ i = 1 n f ( u , v , i ) \sum\limits_{u = 1}^n \sum\limits_{v = u + 1}^n \sum\limits_{i = 1}^n f(u, v, i)u=1nv=u+1ni=1nf(u,v,i)10 9 + 7 10^9 + 7109+7取模的值。

† dis ( u , v ) ^\dagger\text{dis}(u, v)dis(u,v)为树上u , v u, vu,v两点的路径长度。特别地,dis ( u , u ) = 0 \text{dis}(u, u) = 0dis(u,u)=0

输入格式

第一行包含一个整数n nn,表示树的结点数。

之后的n − 1 n - 1n1行中的第i ii行包含两个整数u i , v i u_i, v_iui,vi,表示树上的一条边。

输出格式

输出一行一个整数,表示答案。

输入输出样例 #1

输入 #1

4 1 2 1 3 1 4

输出 #1

9

输入输出样例 #2

输入 #2

6 1 2 2 3 3 4 4 5 5 6

输出 #2

70

输入输出样例 #3

输入 #3

10 1 2 1 3 1 4 2 5 3 6 2 7 4 8 8 9 9 10

输出 #3

536

说明/提示

【样例解释】

在样例1 11中,所有非0 00f ( u , v , i ) f(u, v, i)f(u,v,i)的值为:

  • f ( 1 , 2 , 3 ) = 1 f(1, 2, 3) = 1f(1,2,3)=1
  • f ( 1 , 2 , 4 ) = 1 f(1, 2, 4) = 1f(1,2,4)=1
  • f ( 1 , 3 , 2 ) = 1 f(1, 3, 2) = 1f(1,3,2)=1
  • f ( 1 , 3 , 4 ) = 1 f(1, 3, 4) = 1f(1,3,4)=1
  • f ( 1 , 4 , 2 ) = 1 f(1, 4, 2) = 1f(1,4,2)=1
  • f ( 1 , 4 , 3 ) = 1 f(1, 4, 3) = 1f(1,4,3)=1
  • f ( 2 , 3 , 4 ) = 1 f(2, 3, 4) = 1f(2,3,4)=1
  • f ( 2 , 4 , 3 ) = 1 f(2, 4, 3) = 1f(2,4,3)=1
  • f ( 3 , 4 , 2 ) = 1 f(3, 4, 2) = 1f(3,4,2)=1
【数据范围】

本题采用捆绑测试且开启子任务依赖。

子任务编号分值n ≤ n \len特殊性质子任务依赖
1 118 8850 5050
2 2215 1515400 4004001 11
3 3324 24243000 300030001 , 2 1, 21,2
4 4417 17172 ⋅ 10 5 2 \cdot 10^52105u i = i , v i = i + 1 u_i = i, v_i = i + 1ui=i,vi=i+1
5 5536 36362 ⋅ 10 5 2 \cdot 10^521051 , 2 , 3 , 4 1, 2, 3, 41,2,3,4

对于所有数据,满足2 ≤ n ≤ 2 ⋅ 10 5 2 \le n \le 2 \cdot 10^52n2105,输入的图是一棵树。

C++实现

#include<bits/stdc++.h>usingnamespacestd;#defineintlonglongconstintmod=1e9+7;vector<int>edge[200010];intsz[200010];intn,ans=0;voiddfs(intu,intfa){sz[u]=1;for(autov:edge[u]){if(v==fa)continue;dfs(v,u);sz[u]+=sz[v];}if(u==1)return;intsum=n-sz[u];// 朝“上”子树大小ans+=sum*(sum-1)/2*sz[u]+sz[u]*(sz[u]-1)/2*sum;ans%=mod;}signedmain(){cin>>n;for(inti=1;i<n;i++){intu,v;cin>>u>>v;edge[u].push_back(v);edge[v].push_back(u);}dfs(1,0);cout<<ans;return0;}

后续

接下来我会不断用C++来实现信奥比赛中的算法题、GESP考级编程题实现、白名单赛事考题实现,记录日常的编程生活、比赛心得,感兴趣的请关注,我后续将继续分享相关内容

http://www.jsqmd.com/news/1397860/

相关文章:

  • 华硕笔记本散热终极指南:G-Helper 三步调优风扇曲线、功耗与GPU模式
  • 【AI智能体速通】08.用护栏降低AI 智能体安全风险
  • 2026微信商城搭建有哪些平台,做微信商城可以选哪些平台
  • 老款Mac如何免费再战五年:OpenCore Legacy Patcher 从零到装好最新系统的完整实战
  • MySQL ONLY_FULL_GROUP_BY模式详解:从原理到实战解决方案
  • Git分支管理:从原理到企业级实践
  • 看英文界面像看天书?Figma中文汉化插件FigmaCN实测:几步装好,全界面本地化
  • Umi-OCR 离线OCR识别完全上手指南:从第一张截图到批量PDF处理
  • 一个 Java 开发者的 5 个调试时刻:用 Cool Request 在 IDEA 里完成一站式 API 调试
  • Android SDK开发与打包全流程:从设计到发布的工程实践
  • 免费本地字幕提取工具实测:无需联网的OCR神器,3分钟把视频硬字幕变成SRT文件
  • 【2026-08】广东深圳深度学习Ai检测软件比较好的供货厂家挑哪个?定位Ai检测软件、测量Ai检测软件选择指南——华用科技 - 多才菠萝
  • 武汉优质的奥迪疑难故障维修门店哪家靠谱,奥迪底盘维修/奥迪烧机油维修/奥迪发动机大修,奥迪疑难故障维修门店哪家专业 - 企业权威推荐大使
  • PixVerse与Seedance 2.5组合工作流:打造高质量AI角色动画短片
  • 把 VS Code 装进安卓手机:Code FA 让手机变身离线开发机的完整指南
  • 4步救活被系统淘汰的老iPhone:Legacy-iOS-Kit降级越狱实操指南
  • 金蝶云苍穹插件开发与表单优化实战:从架构设计到性能调优
  • Word文件损坏全解析:从文本恢复转换器到进阶抢救方案
  • Windows代码签名证书免费方案全解析:从自签名到自动化实践
  • 基于Doubao-Seed-Evolving构建个人代码智能归档系统
  • C++输入流解析进阶:从cin局限到自定义分隔符处理实战
  • 打卡信奥刷题(3507)用C++实现信奥题 P10845 [EGOI 2024] Bouquet / 花束制作
  • 3分钟解锁原神成就数据:YaeAchievement 一键导出,告别手动记录
  • rootfs 详解与裁剪优化记录
  • Fusion Training:提升大语言模型数学推理泛化能力的训练策略
  • 千问 LeetCode 3911. 移除子数组元素后第 K 小偶数 Java实现
  • 如何免费精准计算 AI Token 数量:一份 Tiktokenizer 完全指南
  • 从“守护者”到“驱动者”——犬肠成纤维细胞在肠道纤维化病理机制与药物评价中的核心价值
  • 5分钟做出第一个自动化脚本:Pulover‘s Macro Creator零基础入门全攻略
  • AI探索人类意识:从情感计算到存在论对话