题解-ZJOI2015地震后的幻想乡
Problem
题意简述:给定一个\(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\)内部道路数量
\]
\]
考虑到若第\(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地震后的幻想乡的更多相关文章
- 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)
[BZOJ3925][ZJOI2015]地震后的幻想乡(动态规划) 题面 BZOJ 洛谷 题解 题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第 ...
- [ZJOI2015]地震后的幻想乡(期望+dp)
题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡【概率期望+状压DP】
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- [bzoj3925] [洛谷P3343] [ZJOI2015] 地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- ZJOI2015地震后的幻想乡
题面链接 洛咕 sol %%%_rqy 本来想写正常的状压,看到这篇题解就入坑了... 直接搬题解吧,写的太好了不用解释. 慢慢搬,先咕着QAQ #include<cstdio> #inc ...
- 【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学
神™题........ 这道题的提示......(用本苣蒻并不会的积分积出来的)并没有 没有什么卵用 ,所以你发现没有那个东西并不会 不影响你做题 ,然后你就可以推断出来你要求的是我们最晚挑到第几大的 ...
- 洛谷 P3343 - [ZJOI2015]地震后的幻想乡(朴素状压 DP/状压 DP+微积分)
题面传送门 鸽子 tzc 竟然来补题解了,奇迹奇迹( 神仙题 %%%%%%%%%%%% 解法 1: 首先一件很明显的事情是这个最小值可以通过类似 Kruskal 求最小生成树的方法求得.我们将所有边按 ...
- BZOJ 3925 ZJOI2015 地震后的幻想乡
假设我们用了边权前i小的边使得图连通,那么对答案的贡献为i/m+1 又因为期望的线性性质,我们只需要求用了i条边就可以了 不妨设g(S)(i)表示用了i条边使得点集S连通的概率 设f(S)(i)表示用 ...
随机推荐
- Cubase独占声卡问题
打开Cubase之后,这个软件会独占声卡,其他软件都没有声音了.只需要设置一下即可.设备>设备设置,在VST音频处勾选释放后台驱动即可,如图
- C++回顾day01---<命名空间>
一:namespace是指标识符的各种控件范围(类java中package) C++语言引入命名空间(Namespace)这一概念主要是为了避免命名冲突,其关键字为 namespace 二:iostr ...
- CSS3 vmax的用法
1. calc() calc():在流体布局上,可以通过calc()计算得到元素的宽度. 2. vw/vh/vmin/vmax的使用 vw/vh/vmin/vmax是视窗单位,也是相对单位.相对的不是 ...
- 用itext合并多个pdf文件【转】【补】
java代码 package c; import java.io.FileOutputStream; import java.io.IOException; import java.util.Arra ...
- 阅读:ECMAScript 6 入门(2)
参考 ECMAScript 6 入门 ES6新特性概览 ES6 全套教程 ECMAScript6 (原著:阮一峰) JavaScript 教程 重新介绍 JavaScript(JS 教程) Modul ...
- javascript的作用域和闭包(三)闭包与模块
一些很重要的说明:前面三篇博客详细的介绍了,引擎与编译器和作用域的关系,重点需要理解的是编译器中的分词与词法分析,JavaScript的特有的“赋值操作的左右侧”引用操作:编译阶段的词法作用域的工作原 ...
- Spark源码解析 - Spark-shell浅析
1.准备工作 1.1 安装spark,并配置spark-env.sh 使用spark-shell前需要安装spark,详情可以参考http://www.cnblogs.com/swordfall/p/ ...
- python--爬取豆瓣热门国产电视剧保存为文件
# -*- coding: utf-8 -*- __author__ = 'Frank Li' import requests import json class HotSpider(object): ...
- 【转载】C# 字符串截取
https://blog.csdn.net/maba007/article/details/78424760
- 一些优秀的Python包
总结一下我使用到的一些比较优秀的Python package =========================通用包========================= Werkzeug itsdan ...