博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
hdu5723 多校第一题,longlong
阅读量:5226 次
发布时间:2019-06-14

本文共 1045 字,大约阅读时间需要 3 分钟。

官方题解在这

首先注意到任意两条边的边权是不一样的,由此得知最小生成树是唯一的,最小生成树既然 是唯一的,那么期望其实也就是唯一的,不存在什么最小期望。求完最小生成树之后,接下 来的问题就可以转换成在最小生成树上求任意两点之间距离的平均值,对于每条边,统计所 有的路径用到此边的次数,也就是边的两端的点数之积。那么这条边的总贡献就是次数边 权。最后得到所有边的贡献之和再除以总路径数n∗(n−1)/2n(n-1)/2n∗(n−1)/2就是答案。可以OnOnOn求出。任取一点为根dfs,对每个点iii记录其子树包含的点数(包括其自身),设点数为sum[i]sum[i]sum[i],则iii的父亲一侧的点数即为n−sum[i]n-sum[i]n−sum[i]。一边遍历一边统计就行。

懒,longlong是个巨坑点,,,比赛时交了27次还没过(好菜啊)

今天改个I64d就过了,,,心累

#include
#include
#include
#include
#include
using namespace std;typedef long long ll;const int M=1000007;const int N=100007;int m;ll n;struct Edge{ int x,y; ll w; Edge(){} Edge(int a,int b,ll c){x=a;y=b;w=c;} bool operator < (const Edge e)const{
return w
g[N];void Link(int x,int y,int e){ g[x].push_back(e); g[y].push_back(e);}int f[N];int F(int x){ return x==f[x]?x:(f[x]=F(f[x]));}int a[N];bool vis[N];ll SUM;void DFS(int x){ vis[x]=1; a[x]+=1; for (int i=0;i

转载于:https://www.cnblogs.com/cww97/p/7533993.html

你可能感兴趣的文章
MongoDB数据导出
查看>>
Ubuntu常用操作命令
查看>>
mybatis中resultType和resultMap的联系
查看>>
jquery 调用js成员
查看>>
iOS 上传的图片在HTML上显示时,图片方向信息(EXIF Orientation)异常
查看>>
Git
查看>>
JAVA通信系列三:Netty入门总结
查看>>
Java8之新特性--modules
查看>>
RPD Volume 172 Issue 1-3 December 2016 评论02
查看>>
jQuery --计算复选框被选中个数
查看>>
快学UiAutomator UiDevice API 详解
查看>>
robotframework 测试结果写入数据库
查看>>
有一种感动叫ACM(记WJMZBMR在成都赛区开幕式上的讲话)
查看>>
【转】博弈题集
查看>>
Eclipse 远程开发插件 RSE 及远程登录
查看>>
给于用户Agent权限设置
查看>>
T端带数据库查询的假人系统
查看>>
Couldn't find preset "es2015" relative to directory问题解决
查看>>
Linux下常见命令
查看>>
Unix网络编程 高级IO套接字设置超时
查看>>