Average distance HDU - 2376(树形dp求树上任意两点距离和的平均值)

Silly Tavern(酒馆)AI 角色扮演下载与安装教程(Windows本地部署) SillyTavern是一款开源AI角色扮演前端工具,支持沉浸式对话和长期角色互动。本文详细介绍了在Windows系统F盘部署SillyTavern的完整流程,包括下载项目、安装Node.js和Git环境、配置路径、启动服务等关键步骤,并特别说明非系统盘路径可能遇到的npm安装问题及解决方法。成功启动后,用户可通过浏览器访问本地地址使用该工具进行AI角色扮演互动。 阅读详情

Average distance HDU - 2376

Given a tree, calculate the average distance between two vertices in the tree. For example, the average distance between two vertices in the following tree is (d 01 + d 02 + d 03 + d 04 + d 12 +d 13 +d 14 +d 23 +d 24 +d 34)/10 = (6+3+7+9+9+13+15+10+12+2)/10 = 8.6.

这里写图片描述

Input
On the first line an integer t (1 <= t <= 100): the number of test cases. Then for each test case:

One line with an integer n (2 <= n <= 10 000): the number of nodes in the tree. The nodes are numbered from 0 to n - 1.

n - 1 lines, each with three integers a (0 <= a < n), b (0 <= b < n) and d (1 <= d <= 1 000). There is an edge between the nodes with numbers a and b of length d. The resulting graph will be a tree.

Output
For each testcase:

One line with the average distance between two vertices. This value should have either an absolute or a relative error of at most 10 -6

Sample Input

1
5
0 1 6
0 2 3
0 3 7
3 4 2

Sample Output

8.6
题意:

给一棵树,和没两点之间的距离,求任意两点之间距离和的平均值

分析:

我们可以对每条边,求所有可能的路径经过此边的次数:设这条边两端的点的个数分别为A和BA和B,那 么这条边被经过的次数就是A×BA×B(即左侧A中选择方案,右侧B中选择方案),它对总的距离和的贡献就是(A×B×此边长度len)(A×B×此边长度len)。我们把所有边的贡献求总和,再除以总路径数C2n=n×(n−1)2Cn2=n×(n−1)2,即为最 后所求。

每条边两端的点数的计算,实际上是可以用一次dfs解决的。任取一点为根,在dfs的过程中,对每个点k记录其子树包含的点数(包括其自身),设点数为sum[k],则k的父亲一侧的点数即为N-sum[k]。这个统计可以和遍历同时进行。故时间复杂度为O(n)。

code:

#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
const int maxn = 10005;
int sum[maxn],n;
ll dp[maxn];
struct Edge{
    int v,w;
};
vector<Edge> tree[maxn];
void dfs(int cur,int father){
    sum[cur] = 1;//遍历到当前点,只有它本身1个点
    for(int i = 0; i < tree[cur].size(); i++){//遍历它的孩子
        int son = tree[cur][i].v;
        ll len = tree[cur][i].w;
        if(father == son) continue;
        dfs(son,cur);
        sum[cur] += sum[son];//将孩子的节点个数信息返回给父节点(有点类似于线段树向父节点汇总值)
        dp[cur] += dp[son] + (n - sum[son]) * sum[son] * len;
    }
}

int main(){
    int u,v,w,T;
    scanf("%d",&T);
    while(T--){
        scanf("%d",&n);
        for(int i = 0; i < n; i++)
            tree[i].clear();
        memset(sum,0,sizeof(sum));
        memset(dp,0,sizeof(dp));
        for(int i = 0; i < n-1; i++){
            scanf("%d%d%d",&u,&v,&w);
            Edge t1,t2;
            t1.v = v;
            t1.w = w;
            t2.v = u;
            t2.w = w;
            tree[u].push_back(t1);
            tree[v].push_back(t2);
        }
        dfs(0,-1);
        printf("%f\n",dp[0]*2.0/n/(n-1));
    }
    return 0;
}
ardupilot BMI088加速度陀螺仪学习 本节主要记录ardupilot 中BMI088传感器的学习过程,欢迎批评指正。BMI088是一款高性能6轴惯性传感器,由16位数字三轴±24g加速度计和16位数字三轴±2000°/ s陀螺仪组成。 BMI088允许高精度测量方向和沿三个正交轴的运动检测。BMI088具有高振动鲁棒性和3 x 4.5 x0.95mm³的小尺寸,是用于无人机和机器人应用等恶劣环境的高性能IMU中的独特产品。 BMI088专门设计用于有效抑制由于PCB上的共振或整个系统的结构而可能发生的振动。 除了高振动稳定性外,BMI088的出 阅读详情

相关推荐

车辆TBOX科普 第69次 TBOX行业发展趋势与就业前景深度解析

TBOX技术革新驱动汽车智能化发展 Telematics BOX(TBOX)正快速从车辆状态监控器进化为整车智能核心,市场年增速超25%,2025年规模将达150亿美元。技术呈现四大革新方向:5G与V2X集成实现多模通信网关,支持10-20Gbps高速传输;多模GNSS融合定位精度达厘米级,北斗系统提供独特优势;边缘计算架构使TBOX具备本地AI处理能力,减少95%数据上传;硬件安全模块(HSM)成为标配,满足EVITA标准的安全需求。这些技术突破正重塑TBOX架构,使其从单纯通信管道升级为智能网联汽车的关

IT深耕十余载,大道之简 1824

1552:【例 1】点的距离

【题目描述】 给定一棵 n 个点的树,Q 个询问,每次询问点 x 到点 y 两点之间的距离。 【输入】 第一行一个正整数 n,表示这棵树有 n 个节点; 接下来 n−1 行,每行两个整数 x,y表示 x,y 之间有一条连边; 然后一个整数 Q,表示有 Q 个询问; 接下来 Q 行每行两个整数 x,y 表示询问 x 到 y 的距离。 【输出】 输出 Q 行,每行表示每个询问的答案。 【输入样例】 6...

叶上初阳_285557的博客 1336

抖音风控参数逆向实战:从bd-ticket-guard-client-data到x-tt-session-dtrait的完整攻防解析

本文深入解析抖音风控参数逆向实战,重点剖析bd-ticket-guard-client-data和x-tt-session-dtrait的生成机制与破解方法。通过抓包调试、ECDH密钥生成、RSA与AES双层加密等技术手段,揭示抖音风控系统的核心逻辑,并提供实用的对抗策略与维护建议,助力开发者突破抖音风控限制。

weixin_30335575的博客 675

1552:点的距离(倍增求 lca)

const int lgN=20+3; const int N=2e5+5; int n,m,t; int i,j,k; //int a[N]; vector<int> G[N]; int dep[N]; int f[N][lgN]; void dfs(int u,int fa) { dep[u]=dep[fa]+1; for(int i=1;i<lgN;i++){ f[u][i]=f[f...

C_Dreamy的博客 829

drm 之modes

#define _GNU_SOURCE #include <errno.h> #include <fcntl.h> #include <stdbool.h> #include <stdint.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <sys/mman.h> #include <time.h&...

u012794472的专栏 3716

华为OD机试真题新系统-空间占用计算(Py/Java/C/C++/Js/Go)

华为OD机试新系统机试真题 【空间占用计算】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题【空间占用计算】。

qq_45776114的博客 3437

1552 点的距离

1552 点的距离 我是来练习LCA的小菜鸡… 每次询问x和y之间的距离,问的这么直接,估计是个模板题 其实这个题非常的模板题,两个点的距离为两个点与LCA节点的深度之差 所以我们需要维护节点深度和最近公共祖先 然后套用公式就好了 #include<cstdio> #include<algorithm> #include<iostream> using namespace std; const int SIZE=1e5+5; int n,q; int u,v; int t

CCCCDEV_CCCC的博客 408

SAP BOM反查(可追溯值至顶级)

功能介绍:BOM层数在7层以内的(含7层)的物料,执行后都可以查询到顶级的BOM,逻辑很简单,后期如BOM层数增加,可自行增加查询逻辑。 *&---------------------------------------------------------------------* *& Report ZBOM_CHECK *&---------------------...

SAP阿狸 6060

信息学奥赛一本通 1552:【例 1】点的距离

本文介绍了使用倍增算法求解最近公共祖先(LCA)来计算树中两点间距离的方法。首先建立邻接表存储树结构,通过深度优先搜索预处理得到每个节点的深度和倍增数组。对于每次查询,利用LCA将两点间距离分解为两点到根节点的深度之和减去两倍的LCA节点的深度,实现O(logn)时间复杂度的查询。算法适用于无权树结构,能够高效处理多组查询。

君义NOIP的博客 1116

基于FPGA的数字信号处理(17)--定点运算的实现实例(饱和Saturate与四舍五入Round)

基于FPGA的数字信号处理(17)--定点运算的实现实例(饱和Saturate与四舍五入Round)

孤独的单刀 2959

Python爬虫实战【房产刚需专属】:爬取链家/贝壳完整房源数据,精准筛选刚需房源【房价+户型+地段+面积+装修】

本次爬虫的核心亮点就是刚需专属筛选,我已经把刚需买房的主流筛选逻辑封装为独立函数,你只需要修改筛选参数,就能精准匹配你的需求无需懂Python语法,直接改数字/文字即可!本次爬虫是刚需买房+Python爬虫实战的完美结合。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 1824

一本通1552:【例 1】点的距离

非常好懂啊,都来看啊!!!

xiaolongmeiya的博客 735

2023华为od机试C卷【最富裕的小家庭】Java&Go 实现

在一颗树中,每个节点代表一个家庭成员,节点的数字表示其个人的财富值,一个节点及其直接相连的子节点被定义为个小家庭。现给你一颗树,请计算出最富裕的小家庭的财富和。

MISAYAONE的博客 1902

hdu2376 Average distance 树上任意两点距离和 (树形dp)

Problem Description Given a tree, calculate the average distance between two vertices in the tree. For example, the average distance between two vertices in the following tree is (d01 + d02 + d03 + d0...

zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz 304

SIMATIC S7-1200, S7-1500 PID 控制[手册]

SIMATIC S7-1200, S7-1500 PID 控制[手册]

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

HDU2376——Average distance(思维+树形DP)

原题链接 题意: 给定一棵树,有边权,求树上任意两点之间距离的和的平均值。 思路: 传统求树上两点距离是LCA,任意的话要枚举起点和终点,复杂度O(n*n)。 换个思路,考虑每条边的贡献:因为是树,所以任意删除一条边都会将该图分为两个连通块T1,T2,也就是说这条边对答案的贡献就是两个连通块点数的乘积再乘以权值,次数=cnt[T1]*cnt[T2]. 维护每个点的子树所含的点的个数num,n-num就是另一个连通块的点数,树形dp维护即可。 代码: 注意用long long #pragma GCC opti

我们都有光明的未来 314

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

HDU - 2376 Average distance(树形dp)

题目链接:点击这里 题目大意: 给定一棵树,和任意相邻两点之间的距离,求任意两点距离的平均值 题目分析: 树形dp 我们可以先将问题转化为求树上任意两点距离的和,然后除以 Cn2=n(n−1)2C_n^2=\frac{n(n-1)}2Cn2​=2n(n−1)​ 来得到答案 定义状态 dp[i]dp[i]dp[i] 表示以 iii 为根的子树的任意两点距离的和 其转移方程为 dp[i]=∑j∈sonidp[j]+siz[j]⋅(n−siz[j])⋅valdp[i]=\sum_{j\in son_i}dp[j]

羊驼的博客 186

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

【HDU2376】Average distance

题意 求树上每两点之间的距离之和的平均值。 分析 这个也算树形dp吗??我在专题里做到的,感觉完全不是啊... 去求两点的距离是很困难的,所以我们就求边的贡献吧。这个思路好像经常用到诶。 求出每个点的子树大小,对于(u,v,w)这样一条边,它的价值就是它左边的节点数*它右边的节点数*边权,即siz[v]*(n-siz[v])*w 精度要注意一下.. 代码 #inclu...

Ashley_2013的博客 192

HDU2376Average distance(树形dp|树上任意两点距离和的平均值)

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2376 思路: 引:如果暴力枚举两点再求距离是显然会超时的。转换一下思路,我们可以对每条边,求所有可能的路径经过此边的次数:设这条边两端的点数分别为A和B,那 么这条边被经过的次数就是A*B,它对总的距离和的贡献就是(A*B*此边长度)。我们把所有边的贡献求总和,再除以总路径数N*(N-

Rain 2100

HDU 2376——Average distance简单树形DP

题目链接 :http://acm.hdu.edu.cn/showproblem.php?pid=2376 题意 : 给定一棵带权树,计算任意两点之间的平均距离。 思路 : 计算任意两点间平均距离,即计算任意两点间的距离和,然后除以 C2n 即可。 计算两点间距离和,可以考虑每条边的贡献,假设边A权值为w,两端的点的个数分别是m,n,那么这条边的贡献就是 mnw。所以只要dfs一遍每条边 以两端的...

彤云望月 331

【Average distance】【HDU - 2376 】(树形dp)

题目: Given a tree, calculate the average distance between two vertices in the tree. For example, the average distance between two vertices in the following tree is (d 01 + d 02 + d 03 + d 04 + d 12 +d...

哇哈哈哈的博客 317

(树形DP)【HDU-2376】Average distance

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2376 题目大意就是给一棵树,求出树上任意两点间距离的平均值。等价于求出任意两点的距离的和,再除以边数就得到答案了。 求距离和的话,一条边(A,B)的贡献值 = 经过A的次数*经过B的次数*AB这条边的边权   /* * @Author: SamsonHo * @Date: 2018-08...

Samson的博客 261

zoj 2912 hdu 2376 Average distance 树形

题目大意: 求出任意两点之间的距离,并求其平均值 这个题我们是在组队训练的时候做的,看到这个题,队友马上就给我了,简单,但是由于数据类型的选择,和精度的问题,我们到最后都没有A,可惜啊,这是比较简单的一个题,有了思路就好办了,但是,不提了,分析题目吧 看到这个题的时候可能无从下手,当想到每条边用多少次之后就比较简单了,一条边用的次数是其左边点的个数乘以右边点的个数,简单了吧,我用的是树的邻接

水帘洞天 1429

hdu-2376 - Average distance(树形dp )

Given a tree, calculate the average distance between two vertices in the tree. For example, the average distance between two vertices in the following tree is (d 01 + d 02 + d 03 + d 04 + d 12 +d 13 +...

Steve·Curcy 250

Average distance(类树形DP)

Average distance HDU - 2376 Given a tree, calculate the average distance between two vertices in the tree. For example, the average distance between two vertices in the following tree is (d01+ d...

weixin_30486037的博客 240

问题 G: 点的距离

问题 G: 点的距离 时间限制:5 Sec内存限制:128 MB提交:57解决:19 [提交][状态][讨论版][命题人:add_lm][Edit] [TestData] 题目链接:http://acm.ocrosoft.com/problem.php?cid=1691&pid=6 题目描述 给定一棵有n个结点的树,Q个询问,每次询问点x到点y亮点之间的距离 输入...

AlanJobs的博客 317
上一篇: Buy and Resell HDU - 6438(贪心+优先队列)
下一篇: Tree and Permutation HDU - 6446(树形dp)
Guuuuuu老师儿
博客等级 码龄9年 259粉丝 718原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值