简要题意

给定一张 \(n\) 个点 \(m\) 条边的图,边的边权是 \([0, 1]\) 之间均匀分布的随机实数,且相互独立。求最小生成树的最大边权的期望值。

思路

首先有一个比较神秘的跟概率有关的东西,虽然题面中已经给出提示,但这里还是进行简单说明:

引理:将长度为 \(n\) 的区间随机划成 \(m\) 段,每段长度期望是 \(n\over m\)。

笔者询问 deepseek,deepseek 给出了三种证明方法,在此仅给出笔者知道的一种。

我们设第 \(i\) 段长度为 \(L_i\),就有:\(n=\sum\limits_{i=1}^mL_i\)。

根据期望的线性性和对称性我们可以得到:\(n=E(\sum\limits_{i=1}^mL_i)=\sum\limits_{i=1}^mE(L_i)\) 和 \(L_1=L_2=\dots=L_m\)。

所以 \(E(L_i)={n\over m}\)。

所以第 \(k\) 大的边贡献就是 \(k\over m+1\)。我们首先能够有一个 naive 的想法,枚举每个边的大小关系,然后暴力跑 kruskal。这个想法可以启发我们去思考如何统计所有第 \(k\) 大的边的贡献。

首先看每种情况做贡献的概率,确定了选择哪些边要选和哪个边做贡献后就好做了,有 \(P={(k-1)!(m-k)!\over m!}\)。因为期望等于总方案数除以概率,所以现在我们只需要去找方案数,这个就 dp 去求。

因为恰好选第 \(k\) 大的边使图连通不好描述,所以容斥,变成选第 \(k\) 大的边前图不连通的方案数减去选第 \(k\) 大的边后图不连通的方案数。于是就有一个 dp,设 \(f_{S,i}\) 表示 \(S\) 构成的点集中选 \(i\) 条边图不连通的方案,现在考虑枚举子集进行转移。转移就从若干已经连通的子图中选出剩下的一些边,但是不能使整个图连通,所以从严格意义上说是枚举真子集。所以引入 \(g_{S,i}\) 表示 \(S\) 构成的点集中选 \(i\) 条边图连通的方案,就有下面两个转移式:

\[g_{S,i}={d_S\choose i}-f_{S,i}
\]
\[f_{S,i}=\sum_{T\subsetneq S}\sum_{j\le d_T}g_{T,j}{d_{S/T}\choose i-j}
\]

其中 \(d_S\) 为 \(S\) 的导出子图。

最后的答案就是:

\[{1\over m+1}\sum_{i\le m}i({f_{U,i-1}\over{d_U\choose i - 1}}-{f_{U,i}\over{d_U\choose i }})
\]

化简得:

\[{1\over m+1}\sum_{i\le m}{f_{U,i}\over{d_U\choose i }}
\]

代码

signed main(){
n = rd(), m = rd();
for(int i = 1, u, v; i <= m; ++i)u = rd(), v = rd(), ++mp[(1 << u - 1) | (1 << v - 1)];
for(int S = 1; S < (1 << n); ++S)for(int T = S; T; T = T - 1 & S)d[S] += mp[T];
c[0][0] = c[1][0] = 1;
for(int i = 1; i <= m; c[++i][0] = 1)for(int j = 1; j <= i; ++j)c[i][j] = c[i - 1][j - 1] + c[i - 1][j];
for(int S = 1; S < (1 << n); ++S)for(int i = 0; i <= d[S]; ++i){
for(int T = S & S - 1; T; T = T - 1 & S)if(T & (S & - S))
for(int j = 0; j <= min(i, d[T]); ++j)f[S][i] += g[T][j] * c[d[S ^ T]][i - j];
g[S][i] = 1.0 * c[d[S]][i] - f[S][i];
}
for(int i = 0; i <= m; ++i)ans += f[(1 << n) - 1][i] / c[m][i];
ans /= 1.0 + m;
printf("%.6f", ans);
return 0;
}

luogu-P3343题解的更多相关文章

  1. Luogu P1993 题解

    p1993 小康的农场 CSP_S 1=之后就没怎么写题解.. 推荐博客食用 预备知识 明显这是一道差分约束的题,以下简称差分 有些人可能不了解差分,请点 [传送门] 至于用差分做的题的特征,无一都是 ...

  2. luogu 3426题解 (KMP)

    题面 Byteasar 想在墙上涂一段很长的字符,他为了做这件事从字符的前面一段中截取了一段作为模版. 然后将模版重复喷涂到相应的位置后就得到了他想要的字符序列.一个字符可以被喷涂很多次,但是一个位置 ...

  3. Luogu P4643 【模板】动态dp

    题目链接 Luogu P4643 题解 猫锟在WC2018讲的黑科技--动态DP,就是一个画风正常的DP问题再加上一个动态修改操作,就像这道题一样.(这道题也是PPT中的例题) 动态DP的一个套路是把 ...

  4. [题解向] CF#Global Round 1の题解(A $\to$ G)

    这里是总链接\(Link\). \(A\) 题意:求\(\sum_{i=1}^{k} a_i\times b^{k-i}\)的奇偶性, \(k = \Theta(n \log n)\) --其实很容易 ...

  5. [luogu]P1053 篝火晚会[数学][群论]

    [luogu]P1053 篝火晚会 题目描述 佳佳刚进高中,在军训的时候,由于佳佳吃苦耐劳,很快得到了教官的赏识,成为了“小教官”.在军训结束的那天晚上,佳佳被命令组织同学们进行篝火晚会.一共有n个同 ...

  6. luoguP1379 八数码难题[启发式搜索]

    题目描述 在3×3的棋盘上,摆有八个棋子,每个棋子上标有1至8的某一数字.棋盘中留有一个空格,空格用0来表示.空格周围的棋子可以移到空格中.要求解的问题是:给出一种初始布局(初始状态)和目标布局(为了 ...

  7. 「HNOI 2019」白兔之舞

    一道清真的数论题 LOJ #3058 Luogu P5293 题解 考虑$ n=1$的时候怎么做 设$ s$为转移的方案数 设答案多项式为$\sum\limits_{i=0}^L (sx)^i\bin ...

  8. [HNOI2003]消防局的设立 树形dp // 贪心

    https://www.luogu.org/problemnew/show/P2279 一开始就想到了贪心的方法,不过一直觉得不能证明. 贪心的考虑是在深度从深到浅遍历每个结点的过程中,对于每个没有覆 ...

  9. [NOIP2018]保卫王国

    嘟嘟嘟 由于一些知道的人所知道的,不知道的人所不知道的原因,我来发NOIP2018day2T3的题解了. (好像我只是个搬运工--) 这题真可以叫做NOIplus了,跟其他几道比较水的题果然不一样,无 ...

  10. NOIp2018停课刷题记录

    Preface 老叶说了高中停课但是初中不停的消息后我就为争取民主献出一份力量 其实就是和老师申请了下让我们HW的三个人听课结果真停了 那么还是珍惜这次机会好好提升下自己吧不然就\(AFO\)了 Li ...

随机推荐

  1. Jetpack Compose 的原理性文章

    正在写一篇关于UI的思考,接触到 Android 的 Jetpack Compose: 从第一原则撰写 | 可理解的胡言乱语

  2. 2024年1月Java项目开发指南10:vite+Vue3项目创建

    新建项目 安装router npm install vue-router 在src下新建目录router,在目录下新建index.js 在index.js里面配置路由 import { createR ...

  3. 2024年1月Java项目开发指南4:IDEA里配置MYSQL

    提前声明:文章首发博客园(cnblogs.com/mllt) 自动"搬家"(同步)到CSDN,如果博客园中文章发生修改是不会同步过去的,所以建议大家到我的博客园中查看 前提条件: ...

  4. library initialization failed - unable to allocate file descriptor table - out of memoryAborte

    问题描述: 使用Docker run container 的时候, 容器在启动几秒后自动退出 , 或者不退出,但里面的服务无法启动成功. 此例的服务是用 java -jar 来启动一个服务. 使用 d ...

  5. Qt编写安防视频监控系统49-多数据库支持

    一.前言 数据库设置模块,因为很多项目都会用到,索性这期间也将这玩意重新架构了一遍,对应的数据库组件同样重写了一遍,关于数据库的参数无非就6个,数据库类型(sqlite.mysql等).数据库名称.主 ...

  6. Qt音视频开发11-ffmpeg常用命令

    一.前言 大部分的格式转换工具比如格式化工厂等,都用到了ffmpeg来处理,ffmpeg编译后生成的ffmpeg.exe.ffplay.exe.ffprobe.exe等可执行文件,其实就封装了众多牛逼 ...

  7. [转]为什么VS提示SurfFeatureDetector不是cv的成员函数

    surf和sift算法都是在头文件#include <opencv2/features2d/features2d.hpp>中,但在新的opencv版本出来后,如果仍然使用这个头文件就会出现 ...

  8. 史上最通俗Netty入门长文:基本介绍、环境搭建、动手实战

    原作者江成军,原题"还在被Java NIO虐?该试试Netty了",收录时有修订和改动. 1.阅读对象 本文适合对Netty一无所知的Java NIO网络编程新手阅读,为了做到这一 ...

  9. tnn初体验

    tnn-source download-model brew install opencv@3 && brew link --force opencv@3

  10. 如何快速的开发一个完整的iOS直播app(播放篇)

    作者:袁峥链接:https://www.jianshu.com/p/7b2f1df74420来源:简书著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明出处. 开发一款直播app,集成ij ...