题解-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)表示用 ...
随机推荐
- Hadoop问题:java.net.SocketException: Network is unreachable
问题描述:Failed on local exception: java.net.SocketException: Network is unreachable; Host Details : loc ...
- MyBatis-Plugins 的创建流程与执行顺序
一.插件的解析,所有插件都会被添加到 InterceptorChain 类中,用于后续处理 org.apache.ibatis.builder.xml.XMLConfigBuilder private ...
- Hadoop记录-HDFS balancer配置
HDFS balancer配置(可通过CM配置)dfs.datanode.balance.max.concurrent.moves 并行移动的block数量,默认5 dfs.datanode.bala ...
- Linux学习笔记:【002】ARM指令流水线
指令的处理 在CPU中,对于指令的处理一般分为: 1.取指令阶段 取指令(Instruction Fetch,IF)阶段是将一条指令从主存中取到指令寄存器的过程. 程序计数器PC中的数值,用来指示当前 ...
- logstash日志采集工具的安装部署
1.从官网下载安装包,并通过Xftp5上传到机器集群上 下载logstash-6.2.3.tar.gz版本,并通过Xftp5上传到hadoop机器集群的第一个节点node1上的/opt/uploads ...
- python里的input
python2和python3的input是不同的 python3的input 对于python3,只有input,官方文档里是这样描述的 def input(*args, **kwargs): # ...
- Kettle系列:Pentaho DI (Kettle) 下载地址
Kettle 8 已经发布, 下载地址还不太好找, 这里记录一下: 注: 所有大型软件升级都需要谨慎, 尤其是大版本的第一个小版本都不推荐在生产环境使用. github 总是有最新版 https:/ ...
- GreenDao设置数据版本
GreenDao设置数据库版本增加后,会自动删除并创建新数据库,将SCHEMA_VERSION增加即可. 在3.0里可以在config配置里进行设置 apply plugin: 'com.androi ...
- C#子类重写父类函数的两种方法
(1)使用Virtual关键字Override从写 父类子类代码如下,不能修改public 为其它权限 public virtual void Clear() { UpdateView(); } pu ...
- HTTP访问控制(CORS)
当一个资源从与该资源本身所在的服务器不同的域或端口请求一个资源时,资源会发起一个跨域 HTTP 请求. 比如,站点 http://domain-a.com 的某 HTML 页面通过 <img ...