[loj2136]地震后的幻想乡
考虑kruskal的过程:对$n$条边随机排列(排序),令$k$表示前$k$条边恰好能使图联通,根据题目的提示,即$E(\frac{k}{m+1})=\frac{E(k)}{m+1}$
设$p(k)$表示选择$k$条边能使图联通(不是恰好)的方案数,则有$E(k)=\sum_{i=n-1}^{m}(\frac{p(i)}{c(m,i)}-\frac{p(i-1)}{c(m,i-1)})i$
考虑dp,设$f[S][i]$和$g[S][i]$分别表示选择$i$条边(仅考虑两点都在$S$中的边)使得子集$S$联通/不连通的方案数,由于,计算$g[S][i]$
枚举子集$S'\in S$,那么即$g[S][i]=\sum_{S',k\in S'}\sum_{j=0}^{i}c(m,i-j)\cdot f[S'][j]$(这里的$m$是指两点都在$C_{S}S'$中的边数量),同时由于$f[S][i]+g[S][i]=c(m,i)$(这里的$m$是两点都在$S$中的边数),可以算出$f[S][i]$
解释一下:强制$S'$与$C_{S}S'$不连通,同时为了去重,我们强制$S'$联通且让$k\in S'$($k$为$S$中的某个任意元素)
显然$p(i)=f[V][i]$,即可算出答案,时间复杂度通过枚举子集的技巧可以优化到$o(m^{2}\cdot 3^{n})$

1 #include<bits/stdc++.h>
2 using namespace std;
3 #define N 2005
4 #define M 105
5 int n,m,x,y,tot[N];
6 long long c[M][M],g[N][M],f[N][M];
7 double ans,p[M];
8 int main(){
9 scanf("%d%d",&n,&m);
10 for(int i=1;i<=m;i++){
11 scanf("%d%d",&x,&y);
12 int p=((1<<x-1)|(1<<y-1));
13 for(int j=0;j<(1<<n);j++)tot[j]+=((p&j)==p);
14 }
15 for(int i=0;i<=m;i++)c[i][0]=c[i][i]=1;
16 for(int i=1;i<=m;i++)
17 for(int j=1;j<i;j++)c[i][j]=c[i-1][j]+c[i-1][j-1];
18 for(int i=1;i<(1<<n);i++){
19 int p=i-(i&(i-1));
20 for(int j=0;j<=tot[i];j++){
21 for(int k=i;k;k=((k-1)&i))
22 if (k&p)
23 for(int l=0;l<=tot[i^k];l++)g[i][j]+=c[tot[i^k]][l]*f[k][j-l];
24 f[i][j]=c[tot[i]][j]-g[i][j];
25 }
26 }
27 for(int i=n-1;i<=m;i++)p[i]=1.0*f[(1<<n)-1][i]/c[m][i];
28 ans=p[n-1]*(n-1);
29 for(int i=n;i<=m;i++)ans+=(p[i]-p[i-1])*i;
30 printf("%.6f",ans/(m+1));
31 }
[loj2136]地震后的幻想乡的更多相关文章
- 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)
[BZOJ3925][ZJOI2015]地震后的幻想乡(动态规划) 题面 BZOJ 洛谷 题解 题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第 ...
- 「ZJOI2015」地震后的幻想乡 解题报告
「ZJOI2015」地震后的幻想乡 想了半天,打开洛谷题解一看,最高票是_rqy的,一堆密密麻麻的积分差点把我吓跑. 据说有三种解法,然而我只学会了一种最辣鸡的凡人解法. 题意:给一个无向图\(G\) ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- [ZJOI2015]地震后的幻想乡(期望+dp)
题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡【概率期望+状压DP】
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- [bzoj3925] [洛谷P3343] [ZJOI2015] 地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- BZOJ 3925 ZJOI2015 地震后的幻想乡
假设我们用了边权前i小的边使得图连通,那么对答案的贡献为i/m+1 又因为期望的线性性质,我们只需要求用了i条边就可以了 不妨设g(S)(i)表示用了i条边使得点集S连通的概率 设f(S)(i)表示用 ...
- BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)
CLJ就是喜欢出ctsc上讲的东西,看来还是得找时间把他的那几道题做下 首先记f(x)为答案>x的概率,那么把这个东西从0到1积分就是答案了 f(x)<=>边小于x不能使图联通的概率 ...
- [ZJOI2015]地震后的幻想乡
题目传送门 SOL:不会积分的我瑟瑟发抖. 所以我选择状压DP. 我们有以下一个dp状态: f[S][i],S表示点集,i表示这个点集向外联了i条边. 那么答案就是f[(1<<n)-1][ ...
随机推荐
- Multidimension Tools(多维工具)
多维工具 # Process: 创建 NetCDF 栅格图层 arcpy.MakeNetCDFRasterLayer_md("", "", "&quo ...
- django3上线部署踩的坑
好久没有用过django写项目了,最近公司开发个官网,一时兴起就拿来练练手,这不用不知道,一用吓一跳啊. 才多久,版本都到3.0了. 踩坑一:运行项目时失败报错,后来查找资料发现, 当你使用djang ...
- bzoj1407,洛谷2421 NOI2002荒岛野人
题目大意: 克里特岛以野人群居而著称.岛上有排列成环行的M个山洞.这些山洞顺时针编号为1,2,-,M.岛上住着N个野人,一开始依次住在山洞C1,C2,-,CN中,以后每年,第i个野人会沿顺时针向前走P ...
- [JUC-5]ConcurrentHashMap源码分析JDK8
在学习之前,最好先了解下如下知识: 1.ReentrantLock的实现和原理. 2.Synchronized的实现和原理. 3.硬件对并发支持的CAS操作及JVM中Unsafe对CAS的实现. 4. ...
- 【UE4 C++】定时器 Timer 与事件绑定
概念 定时执行操作,可执行一次,或循环执行直到手动终止 定时器在全局定时器管理器(FTimerManager 类型)中管理.全局定时器管理器存在于 游戏实例 对象上以及每个 场景 中 定时器需要绑定委 ...
- ScatterLayout:分散布局在py中的引用
""" ScatterLayout:分散布局 """ from kivy.app import App from kivy.uix.scat ...
- 软件工程个人博客作业-软件案例分析:VS与VS Code
项目 内容 本作业属于北航 2020 年春软件工程 博客园班级连接 本作业是本课程个人项目作业 作业要求 我在这个课程的目标是 提高软件开发能力.团队协作能力 这个作业在哪个具体方面帮助我实现目标 提 ...
- ASP.NET MVC 中使用 jQuery 实现异步搜索功能
常见的几种异步请求方式: Ajax.BeginForm 异步提交文本的形式 Ajax.ActionLinkk 文本链接的形式 Client Validataion 客户端的认证 一.用jQuer ...
- 内核驱动编译之Makefile shell pwd路径问题
一般我们在写Makefile的时候为了获取到当前Makefile所在的文件夹路径,会使用TopDIR ?= $(shell pwd)来定义,后续的文件路径都是基于此TopDIR基础上使用. 今天在移植 ...
- 中文NER的那些事儿4. 数据增强在NER的尝试
这一章我们不聊模型来聊聊数据,解决实际问题时90%的时间其实都是在和数据作斗争,于是无标注,弱标注,少标注,半标注对应的各类解决方案可谓是百花齐放.在第二章我们也尝试通过多目标对抗学习的方式引入额外的 ...