【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 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
随机推荐
- jquery 节点
$("ul li:eq(3)") // 元素的index位置工0开始计数,所以这里的3实际为第4个元素 $("ul").find("li" ...
- PHP 进阶篇:面向对象的设计原则,自动加载类,类型提示,traits,命名空间,spl的使用,反射的使用,php常用设计模式 (麦子学员 第三阶段)
以下是进阶篇的内容:面向对象的设计原则,自动加载类,类型提示,traits,命名空间,spl的使用,反射的使用,php常用设计模式 ================================== ...
- python 连接MSSQL
# -*- coding: utf-8 -*- import pymssql conn=pymssql.connect(host=".",user="sa",p ...
- 分分钟教你学习GIt
Git配置: $ git config --global user.name "awen" $ git config --global user.email "awen@ ...
- CentOS下禁止防火墙
CentOS下禁止防火墙 1.使用如下命令安装iptables-services. yum install -y iptables-services 2.关闭防火墙. service iptables ...
- zabbix监控nginx服务状态
nginx需要安装--with-http_stub_status_module模块 $ nginx -V nginx version: nginx/1.12.2 built by gcc 4.8.5 ...
- 糖果 南阳acm589
糖果 时间限制:1000 ms | 内存限制:65535 KB 难度:2 描述 topcoder工作室的PIAOYIi超级爱吃糖果,现在他拥有一大堆不同种类的糖果,他准备一口气把它们吃完,可是 ...
- java时间"yyyy-mm-dd HH:mm:ss"转成Date
SimpleDateFormat format = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); String time="1 ...
- Waterline从概念到实操
Waterline基本介绍 Waterline是什么 Waterline是下一代存储和检索引擎,也是Sails框架中使用的默认ORM . ORM的基本概念 Object Relational Mapp ...
- javaWeb总结
url传值时:如out.println("<td><a href = 'delete.jsp?user=" + user + "'>删除</ ...