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

  1. #include <bits/stdc++.h>
  2. typedef long long ll;
  3. #define rg register
  4. template <typename _Tp> inline _Tp read(_Tp&x){
  5. char c11=getchar(),ob=0;x=0;
  6. while(c11^'-'&&!isdigit(c11))c11=getchar();if(c11=='-')ob=1,c11=getchar();
  7. while(isdigit(c11))x=x*10+c11-'0',c11=getchar();if(ob)x=-x;return x;
  8. }
  9. const int N=11,M=60,MS=1<<N;
  10. ll c[M][M],C[MS],f[MS][M],g[MS][M];
  11. int n,m,A,bin[N];
  12. void init();void work();void print();
  13. int main(){init();work();print();return 0;}
  14. void work(){
  15. for(rg int S=1;S<bin[n];S+=2)
  16. for(rg int j=0;j<=C[A];++j){
  17. for(rg int s=(S-1)&S;s;s=(s-1)&S)
  18. for(rg int i=0;i<=j;++i)
  19. f[S][j]+=g[s][i]*c[C[S-s]][j-i];
  20. g[S][j]=c[C[S]][j]-f[S][j];
  21. }
  22. }
  23. void print(){
  24. double ans(0.0);
  25. for(rg int i=0;i<=C[A];++i)
  26. ans+=1.0*f[A][i]/c[C[A]][i];
  27. printf("%.6lf\n",ans/(C[A]+1));
  28. }
  29. void init(){
  30. read(n),read(m);A=(1<<n)-1;
  31. int x,y;bin[0]=1;
  32. for(rg int i=1;i<=n;++i)bin[i]=bin[i-1]<<1;
  33. for(rg int i=0;i<=m;++i){
  34. c[i][0]=1;
  35. for(int j=1;j<=i;++j)
  36. c[i][j]=c[i-1][j-1]+c[i-1][j];
  37. }
  38. while(m--){
  39. read(x),read(y);--x,--y;
  40. for(rg int S=1;S<bin[n];++S)
  41. if( S&bin[x] and S&bin[y] )
  42. ++C[S];
  43. }
  44. }

题解-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. 1.Eureka

    分布式系统中,当B的数量越来越多的时候,A只需要从注册中心获取B注册的服务,而不需要直接从B中获取服务,答案显而易见. application.yml: eureka: client: service ...

  2. jdom使用入门及namespace注意事项【原】

    报文样例 <person:info xmlns:person="http://person/abc" id="1"> <fruit id=&q ...

  3. vertica系列:数据的导入导出

    本文仅涉及 Vertica 导入导出本地文件, 以及两个 Vertica 集群相互导出, 不涉及 Vertica 和 hdfs/Hive 导入导出和互操作. copy 数据导入工具 copy 命令无疑 ...

  4. vue-cli3 第三版安装搭建项目

    Vue CLI是一个用于快速Vue.js开发的完整系统 3.X较2.X结构变了很多,更优雅,开发体验更好 官方:https://cli.vuejs.org/guide/ 安装:https://cli. ...

  5. C# using 的用法

    Ø  前言 说起 C# using 语句,想必大家都不陌生,它是 C# 中关键字之一.我们基本每天写代码都会使用到,其实也非常简单. 1.   首先,说说 using 有哪些用途 1)   用于引用其 ...

  6. vivalidi 一款由Web技术诞生的Web浏览器

    vivalidi https://vivaldi.com/ A million ways to customize everything The world is a colorful place b ...

  7. Javaweb学习笔记——(九)——————Servlet的进入,及ServletConfig、GenericServlet、HttpServlet、ServletContext、获取类路径资源

    Servlet1.什么是Servlet? *Servlet是Javaweb三大组件之一(Servlet,Filter,Listener) *Servlet是用来处理客户端请求的动态资源 *Servle ...

  8. JSON CSRF新姿势

    以前做渗透测试,遇到过很多次POST数据为JSON数据的CSRF,一直没有搞定,最近发现一个新姿势, ​​​本文作者:Mannix@安全文库 微信公众号:安全文库 测试的时候,当应用程序验证了Cont ...

  9. bzoj 3620 暴力KMP

    十分暴力的KMP,枚举左端点,在向右侧推进的同时,取较小的la保证条件,n方暴力 #include<bits/stdc++.h> #define rep(i,j,k) for(int i= ...

  10. Hive思维导图之Hive优化