Problem

bzoj & 洛谷

题意简述:给定一个\(n\)(\(n\leq 10\))个点\(m\)条边的无向图,每条边的权值为一个\(0\)到\(1\)之间的连续随机变量,求图的最小生成树中最大边的期望权值

Solution

\(m\)个范围\([0,1]\)之间的随机变量中,第\(i\)大的值期望为\(\frac i{m+1}\)(这个式子我只会证最大值期望为\(\frac m{m+1}\),但不会证第\(i\)大的期望,如果有哪位神犇会证,请赐教)

upd:现在我会证第\(i\)大的期望了☞博客链接

有了这个东西,再考虑到原题是要求联通即可,发现\(kruskal\)算法正好符合

将边排序后加入,若加入到第\(i\)条边时整张图连通,则答案为\(\frac i{m+1}\);若期望第\(i'\)次连通整张图,则答案为\(\frac {i'}{m+1}\)

设\(f[S][i]\)表示用了\(i\)条边不能使\(S\)联通的方案数,\(g[S][i]\)表示用了\(i\)条边能使\(S\)联通的方案数,\(C[S]\)表示点集\(S\)内部道路数量

\[f[S][j]=\sum g[s][i]\cdot \binom {C[S-s]}{j-i}
\]

\[g[S][j]=\binom {C[S]}i-f[S][j]
\]

考虑到若第\(i\)条边加入后仍未连通,则会对后面都造成影响(类似整数期望公式的一种统计方法)

\[Ans=\frac 1{m+1}\sum_{i=0}^m\frac {f[A][i]}{\binom {C[A]}{i}}
\]

最后记得在枚举集合的时候要定下一个点强制选择,否则可能会拓扑序紊乱(代码里的做法就是 S+=2 而不是 ++S,这样枚举的集合必定含有\(1\)号节点)

Code

#include <bits/stdc++.h>
typedef long long ll;
#define rg register template <typename _Tp> inline _Tp read(_Tp&x){
char c11=getchar(),ob=0;x=0;
while(c11^'-'&&!isdigit(c11))c11=getchar();if(c11=='-')ob=1,c11=getchar();
while(isdigit(c11))x=x*10+c11-'0',c11=getchar();if(ob)x=-x;return x;
} const int N=11,M=60,MS=1<<N;
ll c[M][M],C[MS],f[MS][M],g[MS][M];
int n,m,A,bin[N]; void init();void work();void print();
int main(){init();work();print();return 0;} void work(){
for(rg int S=1;S<bin[n];S+=2)
for(rg int j=0;j<=C[A];++j){
for(rg int s=(S-1)&S;s;s=(s-1)&S)
for(rg int i=0;i<=j;++i)
f[S][j]+=g[s][i]*c[C[S-s]][j-i];
g[S][j]=c[C[S]][j]-f[S][j];
}
} void print(){
double ans(0.0);
for(rg int i=0;i<=C[A];++i)
ans+=1.0*f[A][i]/c[C[A]][i];
printf("%.6lf\n",ans/(C[A]+1));
} void init(){
read(n),read(m);A=(1<<n)-1;
int x,y;bin[0]=1;
for(rg int i=1;i<=n;++i)bin[i]=bin[i-1]<<1;
for(rg int i=0;i<=m;++i){
c[i][0]=1;
for(int j=1;j<=i;++j)
c[i][j]=c[i-1][j-1]+c[i-1][j];
}
while(m--){
read(x),read(y);--x,--y;
for(rg int S=1;S<bin[n];++S)
if( S&bin[x] and S&bin[y] )
++C[S];
}
}

题解-ZJOI2015地震后的幻想乡的更多相关文章

  1. 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)

    [BZOJ3925][ZJOI2015]地震后的幻想乡(动态规划) 题面 BZOJ 洛谷 题解 题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第 ...

  2. [ZJOI2015]地震后的幻想乡(期望+dp)

    题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...

  3. BZOJ3925: [Zjoi2015]地震后的幻想乡

    Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...

  4. BZOJ3925: [Zjoi2015]地震后的幻想乡【概率期望+状压DP】

    Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...

  5. [bzoj3925] [洛谷P3343] [ZJOI2015] 地震后的幻想乡

    Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...

  6. ZJOI2015地震后的幻想乡

    题面链接 洛咕 sol %%%_rqy 本来想写正常的状压,看到这篇题解就入坑了... 直接搬题解吧,写的太好了不用解释. 慢慢搬,先咕着QAQ #include<cstdio> #inc ...

  7. 【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学

    神™题........ 这道题的提示......(用本苣蒻并不会的积分积出来的)并没有 没有什么卵用 ,所以你发现没有那个东西并不会 不影响你做题 ,然后你就可以推断出来你要求的是我们最晚挑到第几大的 ...

  8. 洛谷 P3343 - [ZJOI2015]地震后的幻想乡(朴素状压 DP/状压 DP+微积分)

    题面传送门 鸽子 tzc 竟然来补题解了,奇迹奇迹( 神仙题 %%%%%%%%%%%% 解法 1: 首先一件很明显的事情是这个最小值可以通过类似 Kruskal 求最小生成树的方法求得.我们将所有边按 ...

  9. BZOJ 3925 ZJOI2015 地震后的幻想乡

    假设我们用了边权前i小的边使得图连通,那么对答案的贡献为i/m+1 又因为期望的线性性质,我们只需要求用了i条边就可以了 不妨设g(S)(i)表示用了i条边使得点集S连通的概率 设f(S)(i)表示用 ...

随机推荐

  1. Cubase独占声卡问题

    打开Cubase之后,这个软件会独占声卡,其他软件都没有声音了.只需要设置一下即可.设备>设备设置,在VST音频处勾选释放后台驱动即可,如图

  2. C++回顾day01---<命名空间>

    一:namespace是指标识符的各种控件范围(类java中package) C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为 namespace 二:iostr ...

  3. CSS3 vmax的用法

    1. calc() calc():在流体布局上,可以通过calc()计算得到元素的宽度. 2. vw/vh/vmin/vmax的使用 vw/vh/vmin/vmax是视窗单位,也是相对单位.相对的不是 ...

  4. 用itext合并多个pdf文件【转】【补】

    java代码 package c; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arra ...

  5. 阅读:ECMAScript 6 入门(2)

    参考 ECMAScript 6 入门 ES6新特性概览 ES6 全套教程 ECMAScript6 (原著:阮一峰) JavaScript 教程 重新介绍 JavaScript(JS 教程) Modul ...

  6. javascript的作用域和闭包(三)闭包与模块

    一些很重要的说明:前面三篇博客详细的介绍了,引擎与编译器和作用域的关系,重点需要理解的是编译器中的分词与词法分析,JavaScript的特有的“赋值操作的左右侧”引用操作:编译阶段的词法作用域的工作原 ...

  7. Spark源码解析 - Spark-shell浅析

    1.准备工作 1.1 安装spark,并配置spark-env.sh 使用spark-shell前需要安装spark,详情可以参考http://www.cnblogs.com/swordfall/p/ ...

  8. python--爬取豆瓣热门国产电视剧保存为文件

    # -*- coding: utf-8 -*- __author__ = 'Frank Li' import requests import json class HotSpider(object): ...

  9. 【转载】C# 字符串截取

    https://blog.csdn.net/maba007/article/details/78424760

  10. 一些优秀的Python包

    总结一下我使用到的一些比较优秀的Python package =========================通用包========================= Werkzeug itsdan ...