【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学
神™题........
这道题的提示......(用本苣蒻并不会的积分积出来的)并没有 没有什么卵用 ,所以你发现没有那个东西并不会 不影响你做题 ,然后你就可以推断出来你要求的是我们最晚挑到第几大的边会形成最小生成树(可以看成是在Kruskal),然后我就开始YY了(一本正经)。
首先我想到了枚举边的排列这样比较好做应该可以拿到50分,然后,在此基础上我想到了用Prim式构造最小生成树然后以转移的方式求出对应的每个最晚第几的概率,转移致死....后来我去枚举树的形态,发现不会求每种形态所对应的概率......(这个故事告诉我们像期望概率和一些数学等等这些思维量极其大极其抽象而且特别容易会搞迷糊还有概念性的东西一定要想清楚再乱搞,三思啊,你都不知道你离正解差多少步)
然后我去怂题解.....
woc!为啥我没想到状压呀,10的数据范围啊。
首先进行喜闻乐见的概率期望转化,我们利用那个式子可以得出我们要求出“我们最晚挑到第几大的边会形成最小生成树”的期望,再除(m+1),之后我们发现这样还可以转化为∑第i小的边在总情景下出现的概率,也就是∑已经用了i条边不得不再用下一条边的概率,于是也就是∑已经选了i条边然而并没有联通的概率,好了我们得到了我们最终要求的东西了。
然后开始求,我们要求的是面向所有点的,然而我们发现直接求得有一些困难,所以我们就开始递推,我们可以把子集转移的思想运用到图中,就是从诱导子图中转移,(G'=(V', E'),V'被包含于V,E'={(u, v)|u, v属于V',(u, v)属于E},G'为G的诱导子图。注意:对于V',只要在G中有边,那么在G'中同样应该有边。)
#include <cstdio>
#include <cstring>
#include <iostream>
#include <algorithm>
#define ft first
#define sd second
#define mmp(a,b) (std::make_pair(a,b))
typedef std::pair<int,int> pii;
typedef long long LL;
typedef long double ld;
const int F=;
const int M=;
const int N=;
int n,m,bin[N],full,cnt[F],num[F];
LL f[F][M],g[F][M],c[M][M];
pii e[M];
int main(){
bin[]=,c[][]=;
for(int i=;i<=;++i)bin[i]=bin[i-]<<;
for(int i=;i<=;++i){
c[i][]=;
for(int j=;j<=i;++j)
c[i][j]=c[i-][j-]+c[i-][j];
}
scanf("%d%d",&n,&m),full=(<<n)-;
for(int i=;i<=m;++i)
scanf("%d%d",&e[i].ft,&e[i].sd);
for(int i=;i<=full;++i){
for(int j=;j<=m;++j)
if((bin[e[j].ft-]&i)&&(bin[e[j].sd-]&i))
++cnt[i];
for(int j=;j<n;++j)
if(i&bin[j])
++num[i];
}
for(int i=;i<=full;++i){
if((i&)==)continue;
if(num[i]==){
g[i][]=;continue;
}
int stand=i&(-i);
for(int j=i;j;j=((j-)&i))
if(j&stand)
for(int k=;k<=cnt[j];++k)
for(int l=;l<=cnt[i^j];++l)
f[i][k+l]+=g[j][k]*c[cnt[i^j]][l];
for(int j=;j<=cnt[i];++j)
g[i][j]=c[cnt[i]][j]-f[i][j];
}ld ans=.;
for(int i=;i<m;++i)
ans+=(ld)f[full][i]/(ld)c[m][i];
ans/=(m+);
printf("%lf",(double)ans);
return ;
}
【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学的更多相关文章
- BZOJ 3925 ZJOI2015 地震后的幻想乡 状压dp+期望
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3925 题意概述: 给出一张N点M边的最小生成树,其中每条边的长度为[0,1]的实数,求最小 ...
- BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)
CLJ就是喜欢出ctsc上讲的东西,看来还是得找时间把他的那几道题做下 首先记f(x)为答案>x的概率,那么把这个东西从0到1积分就是答案了 f(x)<=>边小于x不能使图联通的概率 ...
- BZOJ 3925 [Zjoi2015]地震后的幻想乡 ——期望DP
我们只需要考虑$\sum F(x)P(x)$的和, $F(x)$表示第x大边的期望,$P(x)$表示最大为x的概率. 经过一番化简得到$ans=\frac{\sum T(x-1)}{m+1}$ 所以就 ...
- BZOJ 3925 ZJOI2015 地震后的幻想乡
假设我们用了边权前i小的边使得图连通,那么对答案的贡献为i/m+1 又因为期望的线性性质,我们只需要求用了i条边就可以了 不妨设g(S)(i)表示用了i条边使得点集S连通的概率 设f(S)(i)表示用 ...
- BZOJ 3925: [Zjoi2015] 地震后的幻想乡(概率DP)
这里有一篇很好很强的博客%%% YouSiki大佬的博客 多理解一会就行了- 代码 #include <bits/stdc++.h> using namespace std; typede ...
- [ZJOI2015]地震后的幻想乡(期望+dp)
题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡【概率期望+状压DP】
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)
[BZOJ3925][ZJOI2015]地震后的幻想乡(动态规划) 题面 BZOJ 洛谷 题解 题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
随机推荐
- Qt on Android 蓝牙通信开发
版权声明:本文为MULTIBEANS ORG研发跟随文章,未经MLT ORG允许不得转载. 最近做项目,需要开发安卓应用,实现串口的收发,目测CH340G在安卓手机上非常麻烦,而且驱动都是Java版本 ...
- CMDB介绍
CMDB https://lupython.gitee.io/2018/05/05/CMDB%E4%BB%8B%E7%BB%8D/ 尚泽凯博客地址 传统运维与自动化运维的区别 传统运维: 1.项目 ...
- rails小技巧之分组查询统计并去重
分组查询并统计 SpecialGroup.group(:special_type).count select special_type,count(*) from special_groups gro ...
- PHP教程专题资源免费下载地址收藏
PHP教程专题资源免费下载地址收藏 PHP,即Hypertext Preprocessor,是一种被广泛应用的开源通用脚本语言,尤其适用于 Web 开发并可嵌入 HTML 中去.它的语法利用了 C. ...
- C语言实例解析精粹学习笔记——35(报数游戏)
实例35: 设由n个人站成一圈,分别被编号1,2,3,4,……,n.第一个人从1开始报数,每报数位m的人被从圈中推测,其后的人再次从1开始报数,重复上述过程,直至所有人都从圈中退出. 实例解析: 用链 ...
- mongodb的学习之旅一
描述 作为一枚菜鸟级别的coder,刚接触nodejs没有多久.现在在学习微信公众号的开发,但是碰到了mongodb保存用户数据的时候,出现了DeprecationWarning: Mongoose: ...
- linux命令大全(转载)
在搭建openstack时遇到问题,导致上网查询相关信息.找到一篇不错的文章,希望对大家有用.下附地址: http://blog.csdn.net/junbujianwpl/article/detai ...
- 2,理解JVM
一.内存管理: 1,内存结构: 栈和堆区别,栈是连续内存区,一般是2M单位,堆是不连续的链表.受限于虚拟内存,new时分配 PC寄存器.java栈.堆.方法区.本地方法区.运行常量池 java ...
- 基于jersey和Apache Tomcat构建Restful Web服务(二)
基于jersey和Apache Tomcat构建Restful Web服务(二) 上篇博客介绍了REST以及Jersey并使用其搭建了一个简单的“Hello World”,那么本次呢,再来点有趣的东西 ...
- ACE Reactor 源码解析
http://blogs.readthedocs.org/ ACE的学习笔记,根据源码分析了Reactor模型的实现. 因为笔记编写技术限制,这里仅列出主要目录,如有可能可以抽空复制到该Blog中 ...