正题

题目链接:https://www.luogu.com.cn/problem/P3343


题目大意

给出\(n\)个点的一张无向图,每条边被修复的时间是\([0,1]\)的一个随机实数,求这张图联通期望时间。

\(1\leq n\leq 10,m\leq \frac{n(n-1)}{2}\)


解题思路

这个随机实数好像是用来吓人的(但是概率分布函数好像能搞)

假设修好了\(k\)条之后恰好联通了,那么期望需要的时间就是\(\frac{k}{m+1}\)

好了现在要求恰好在\(k\)条边修好之后联通的方案,因为每条边修好的先后顺序是完全随机的。

设\(f_{S,i}\)在生成子图\(S\)中修好了\(i\)条边是没有联通的方案,\(g_{S,i}\)则表示联通了的方案,\(d_{S}\)表示生成子图\(S\)的边数。

求\(f_{S,i}\)的话和之前的[集训队作业2013]城市规划思路很向,考虑扩展出一个新的点\(k\),那么我们枚举一个包含\(k\)的联通块\(T(k\in T,T\subseteq S)\),然后合并这个联通块后其他的乱选,就有方程

\[f_{S,i}=\sum_{k\in T,T\subseteq S}\sum_{j=0}^{min\{d_{T},i\}}g_{T,j}\times \binom{d_{S-T}}{i-j}
\]

然后\(g_{S,i}\)不需要专门的方程因为有\(f_{S,i}+g_{S,i}=\binom{d_S}{i}\)

然后答案就是

\[\sum_{i=0}^{m}\frac{i}{m+1}(\frac{f_{G,i}}{\binom{d_G}{i}}-\frac{f_{S,i-1}}{\binom{d_G}{i-1}})=\frac{1}{m+1}\sum_{i=0}^m\frac{f_{G,i}}{\binom{d_G}{i}}
\]

时间复杂度\(O(3^nn^2)\)


code

#include<cstdio>
#include<cstring>
#include<algorithm>
#define ll long long
using namespace std;
const ll N=10;
ll n,m,e[1<<N],d[1<<N],g[1<<N][N*N/2],f[1<<N][N*N/2],C[51][51];
signed main()
{
scanf("%lld%lld",&n,&m);
for(ll i=1;i<=m;i++){
ll x,y;
scanf("%lld%lld",&x,&y);
x--;y--;e[(1<<x)|(1<<y)]++;
}
ll MS=(1<<n);
for(ll s=0;s<MS;s++)
for(ll t=s;t;t=(t-1)&s)
d[s]+=e[t];
C[0][0]=1;
for(ll i=1;i<=50;i++)
for(ll j=0;j<=50;j++)
C[i][j]=(j?C[i-1][j-1]:0)+C[i-1][j];
for(ll s=1;s<MS;s++){
for(ll i=0;i<=d[s];i++){
ll k=s&-s;
for(ll t=(s-1)&s;t;t=(t-1)&s)
if(t&k)
for(ll j=0;j<=min(i,d[t]);j++)
f[s][i]+=g[t][j]*C[d[s-t]][i-j];
g[s][i]=C[d[s]][i]-f[s][i];
}
}
double ans=0;
for(ll k=0;k<=m;k++)
ans+=(double)f[MS-1][k]/C[m][k];
printf("%.6lf\n",ans/(double)(m+1));
return 0;
}

P3343-[ZJOI2015]地震后的幻想乡【dp,数学期望】的更多相关文章

  1. 洛谷P3343 [ZJOI2015]地震后的幻想乡 [DP,概率期望]

    传送门 思路 题目给了一个提示:对于\(n\)个\([0,1]\)的随机变量,其中第\(k\)小的期望大小是\(\frac{k}{n+1}\). 这引导我们枚举边的相对大小的全排列,然后求最小生成树 ...

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

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

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

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

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

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

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

    传送门 给积分大佬跪了 再给状压大佬也跪了 //minamoto #include<bits/stdc++.h> #define rint register int #define ll ...

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

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

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

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

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

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

  9. BZOJ 3925 ZJOI2015 地震后的幻想乡 状压dp+期望

    题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3925 题意概述: 给出一张N点M边的最小生成树,其中每条边的长度为[0,1]的实数,求最小 ...

  10. 【BZOJ3925】[ZJOI2015] 地震后的幻想乡(状压期望DP)

    点此看题面 大致题意: 有\(n\)个点和\(m\)条边,每条边的权值是一个\(0\sim1\)的随机实数,要你用\(n-1\)条边将图联通,问这\(n-1\)条边中边权最大值的期望最小值. 提示 这 ...

随机推荐

  1. 被MySQL慢日志查询搞废了?3分钟教你快速定位慢查询问题!

    一条慢查询会造成什么后果?刚开始使用MySQL的开发.初级DBA 以为就是简单的查询变慢些,体验稍微有一丢丢影响,殊不知,慢查询的破坏力远不止如此.业务高峰期,这头SQL还没处理完,大量新的查询请求堆 ...

  2. Vue 如何实现一个底部导航栏组件

    参考网址: https://www.jianshu.com/p/088936b7b1bd/ Vue 如何实现一个底部导航栏组件 可以看到父组件是知道我点击了底部TabBar的哪个item的. 实现 实 ...

  3. C#中调用c++的dll具体创建与调用步骤,亲测有效~ (待验证)

    使用的工具是VS2010哦~其他工具暂时还没试过 我新建的工程名是my21dll,所以会生成2个同名文件.接下来需要改动的只有画横线的部分 下面是my21dll.h里面的... 下面的1是自动生成的不 ...

  4. linux &和&&,|和||

    &和&&,|和||区别: &  表示任务在后台执行,如要在后台运行redis-server,则有  redis-server & && 表示前一 ...

  5. Mybatis中多表联查,查询出来的字段出现重名,造成数据异常的解决方法!

    在做一对多出现的问题,引发的思考:当数据库表中,主表的主键id和明细表的中的字段名相同时怎么办?Mybatis进行自动映射赋值的时候会不会出现异常?                      注意:M ...

  6. JDBC中级篇(MYSQL)——在JDBC中如何获得表中的,自增长的字段值

    注意:其中的JdbcUtil是我自定义的连接工具类:代码例子链接: package c_increment; import java.sql.Connection; import java.sql.P ...

  7. CSS截取字段,让过长的字段结尾变成省略号(IE有效)

    text-overflow:ellipsis;overflow:hidden;<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transiti ...

  8. Python中的私有属性私有方法、类属性类方法以及单例设计模式

    私有属性是对象不希望公开的属性,私有方法是对象不希望公开的方法.在定义私有属性和私有方法时,在属性或者方法前,加上__(两个下划线) 公有方法可以通过对象名直接调用,私有方法不能通过对象名直接调用,只 ...

  9. Windows系统一些好用的办公工具

    在日常办公过程中,总有一些工具令人觉得方便,提高了工作效率.以下是根据我的习惯,收集了一些好用的工具,在此记录且不定期更新. 文件名 说明 Everything 文件搜索工具,搜索速度快 ALTRun ...

  10. Structs2的作用是什么??

    struts2是一种重量级的框架,位于MVC架构中的controller,可以分析出来,它是用于接受页面信息然后通过内部处理,将结果返回. 同时struts2也是一个web层的MVC框架,那么什么是s ...