题意:给定一张点数不超过10的无向连通图,每条边有一个[0,1]之间的随机权值,求最小生成树上最大边的期望值

提示:对于n个[0,1]之间的随机变量x1,x2,...,xn,第k小的那个的期望值是k/(n+1)。

思路:From http://www.cnblogs.com/ihopenot/p/6606665.html

题目后面的小提示很有用,问题实际上就转化为了求用k条边使原图恰好联通的概率。
但是恰好联通是个很蛋疼的条件,所以我们稍微把问题再变一变,我们去求用k条边原图仍不联通的概率
设f[S][k]为用了k条边原图的子集S仍不联通的方案数,总方案数显然为C[S中的边数][k]。
那么这样的话,每种边数对答案的贡献就是(f[S][k]/C[S][k])*(1/(m+1))
因为每条边无法联通图的话必然会让下一条边的期望增加1/(m+1)
那么关键就是求解 f
对于不连通图的计数可以固定某个点,枚举连通块,去不重不漏地计数
所以我们的 f 用这种方法去转移
 
静待Round 2爆炸退役
 var dp:array[..,..]of extended;
a:array[..,..]of longint;
cnt:array[..]of longint;
c:array[..,..]of extended;
n,m,i,sta,k,t,j,x,y:longint;
ans:extended; function lowbit(x:longint):longint;
begin
exit(x and (-x));
end; begin
assign(input,'bzoj3925.in'); reset(input);
assign(output,'bzoj3925.out'); rewrite(output);
read(n,m);
for i:= to m do
begin
read(x,y);
a[x,y]:=; a[y,x]:=;
end;
c[,]:=;
for i:= to m do
begin
c[i,]:=;
for j:= to i do c[i,j]:=c[i-,j-]+c[i-,j];
end;
for sta:= to (<<n)- do
begin
for i:= to n do
for j:= to n do
if (a[i,j]=)and
(sta and (<<(i-))>)and(sta and (<<(j-))>) then inc(cnt[sta]);
cnt[sta]:=cnt[sta]>>;
end;
for sta:= to (<<n)- do
begin
t:=lowbit(sta);
k:=sta and (sta-);
while k> do
begin
if k and t= then begin k:=sta and (k-); continue; end;
for i:= to cnt[sta] do
for j:= to i do
dp[sta,i]:=dp[sta,i]+(c[cnt[k],j]-dp[k,j])*c[cnt[sta xor k],i-j];
k:=sta and (k-);
end;
end;
for i:= to cnt[(<<n)-] do ans:=ans+dp[(<<n)-,i]/c[cnt[(<<n)-],i];
ans:=ans/(m+);
writeln(ans::); close(input);
close(output);
end.

【BZOJ3925】地震后的幻想乡(期望概率DP,状压DP)的更多相关文章

  1. 【BZOJ 3925】[Zjoi2015]地震后的幻想乡 期望概率dp+状态压缩+图论知识+组合数学

    神™题........ 这道题的提示......(用本苣蒻并不会的积分积出来的)并没有 没有什么卵用 ,所以你发现没有那个东西并不会 不影响你做题 ,然后你就可以推断出来你要求的是我们最晚挑到第几大的 ...

  2. 【BZOJ】1076 [SCOI2008]奖励关 期望DP+状压DP

    [题意]n种宝物,k关游戏,每关游戏给出一种宝物,可捡可不捡.每种宝物有一个价值(有负数).每个宝物有前提宝物列表,必须在前面的关卡取得列表宝物才能捡起这个宝物,求期望收益.k<=100,n&l ...

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

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

  4. Luogu4547 THUWC2017 随机二分图 概率、状压DP

    传送门 考虑如果只有$0$组边要怎么做.因为$N \leq 15$,考虑状压$DP$.设$f_i$表示当前的匹配情况为$i$时的概率($i$中$2^0$到$2^{N-1}$表示左半边的匹配情况,$2^ ...

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

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

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

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

  7. HDU4336 Card Collector (概率dp+状压dp)

    http://acm.hdu.edu.cn/showproblem.php?pid=4336 题意:有n种卡片,一个包里会包含至多一张卡片,第i种卡片在某个包中出现的次数为pi,问将所有种类的卡片集齐 ...

  8. SCUT - 254 - 欧洲爆破 - 概率dp - 状压dp

    https://scut.online/p/254 思路很清晰,写起来很恶心. #include<bits/stdc++.h> using namespace std; #define l ...

  9. bzoj1076: [SCOI2008]奖励关(期望dp+状压dp)

    1076: [SCOI2008]奖励关 Time Limit: 10 Sec  Memory Limit: 128 MBSubmit: 2989  Solved: 1557[Submit][Statu ...

  10. BZOJ 3925 [Zjoi2015]地震后的幻想乡 ——期望DP

    我们只需要考虑$\sum F(x)P(x)$的和, $F(x)$表示第x大边的期望,$P(x)$表示最大为x的概率. 经过一番化简得到$ans=\frac{\sum T(x-1)}{m+1}$ 所以就 ...

随机推荐

  1. 453 Minimum Moves to Equal Array Elements 最小移动次数使数组元素相等

    给定一个长度为 n 的非空整数数组,找到让数组所有元素相等的最小移动次数.每次移动可以使 n - 1 个元素增加 1.示例:输入:[1,2,3]输出:3解释:只需要3次移动(注意每次移动会增加两个元素 ...

  2. Xml学习笔记(1)

    不同的xml文档构可能要用到不同的方法进行解析这里用到的是例如<student name="张三" id="1" sex="男"/&g ...

  3. 第三方知乎专栏应用Android源码

    这是一个国内开发者白瓦力贡献的一个简约的第三方知乎客户端,也许完整度不太高,但感觉还是相当不错的,其实我也是一个知乎迷,尽管平时围观的比较多. 我相信很多搞安卓开发的童鞋也去过知乎解惑吧.引用作者的描 ...

  4. Nexus环境搭建

    安装 1.解压nexus-2.11.01-bundle.zip到F:\Java\nexus(可自定义) 2.进入F:\Java\nexus\nexus-2.11.1-01\bin\jsw进入相应的系统 ...

  5. WM

    #define WM_NULL 0x0000 #define WM_CREATE 0x0001 #define WM_DESTROY 0x0002 #define WM_MOVE 0x0003 #de ...

  6. controller,sevices层,java初步了解

    一.controller层 二.service层 1.接口 2.接口的实现 转换 ClearingAccountArgument对象

  7. install docker on centos7

    copy from:https://www.youtube.com/watch?v=pm55BUwQ0iE # Prerequisites - Kernel must be 3.10 at minim ...

  8. python 深复制和浅复制

    https://www.python-course.eu/python3_deep_copy.php-------------------------------------------------- ...

  9. Spring Boot . 2 -- 用Spring Boot 创建一个Java Web 应用

    通过 start.spring.io 创建工程 通过 IDEA 创建工程

  10. 笔试算法题(41):线索二叉树(Threaded Binary Tree)

    议题:线索二叉树(Threaded Binary Tree) 分析: 为除第一个节点外的每个节点添加一个指向其前驱节点的指针,为除最后一个节点外的每个节点添加一个指向其后续节点的指针,通过这些额外的指 ...