题目链接

  神难qwq。配合rqy的博客食用。

  首先我们学到有一个概率函数$p(x)$表示某事件发生概率取值小于x的函数。这个函数有什么特点呢?

  那就是$\int_{-∞}^{∞}p(x)dx=1$

  这个是显然的

  然后我们令p(x)为首次联通的时间的概率分布函数

  这其实等价于生成树的最大权边等于x的概率,对不对(我虚啊,我很可能理解错的)

  然后呢,就有一个期望的式子

  $EX=\int tp(t)dt$

  我忘了是为什么了(上午rqy才刚给我讲过,现在就忘了),我太菜了。

  然后本题中,期望就是$EX=\int_{0}^{1}xp(x)dx$

  $=\int_{0}^{1}p(x)( \int_{0}^{x}1ds)dx$

  $=\int_{0}^{1}(\int_{s}^{1}p(x)dx)ds$

  然后我们把括号里面那个玩意设成P(s)好了

  所以原式被我们化成了$\int_{0}^{1}P(s)ds$

  然后……emm等一会我忘了我要干嘛了qwq

  ……
  然后我们设一个$f_{x,S}$表示集合S(S包含1节点)在x时刻前不连通,x时刻恰好联通的概率

  因为在x时刻不连通,所以我们考虑它的转移

  $f_{x,S}=\sum\limits_{1属于S'}^{S'包含于S}(1-f_{x,S'})(1-x)^{T(S',S-S')}$

  这什么意思呢?

  我们设T(A,B)为A点集和B点集之间的边数。

  首先我们看见里面有一个$(1-f_{x,S'})$,这个玩意的意思是

  既然我们的S集合要恰好联通,那在这之前S'作为S的一个子集是一定要联通的。而f表示的是不连通的概率,所以就是1-x呗。

  而且S'和外界不要联通。

  既然S和外界不要联通,那每条边在x时刻不连通的概率是(1-x),那T条边都不连通的概率就是$(1-x)^{T(S',S-S')}$

  所以说$f_{x,S'}$就是这么一个玩意儿。

  然后我们把x当成参,就有了$f_{S'}(x)$这么一个东西。

  然后……比如说有个全集U

  最后我们求的就是这么一个玩意

  $\int_{0}^{1}f_{U}(x)dx$

  然后下面的我就全忘了,顺着rqy的笔迹讲,不过我自己也看不懂是在干嘛qwq

  我们设$dp_{S,k}=\int_{0}^{1}f_{S}(x)(1-x)^{k}dx$

  $=\int_{0}^{1}(\sum\limits_{1属于S'}^{S'包含于S}(1-f_{S'}(x))(1-x)^{T(S',S-S')})(1-x)^{k}dx$

  设t=T(S',S-S')

  $dp_{S,k}=\sum\limits_{1属于S'}^{S'包含于S}\int_{0}^{1}(1-f_{S'}(x))(1-x)^{t+k}dx$

  $=\sum\limits_{1属于S'}^{S'包含于S}\int_{0}^{1}(1-x)^{t+k}-f_{S'}(x)(1-x)^{t+k}dx$

  我们发现后面那个玩意等于$dp_{S',t+k}$

  就可以搞啦。至于k到底干嘛的,rqy说不表示实际意义,只是用来简化计算,我没听懂。qwq

  最后求的答案就是$dp_{U,0}$

  然后就是递归搞一搞DP输出。

  (当然到考场上如果碰到这道题我倾向于手玩。智商-INFqwq。)

  

#include<cstdio>
#include<cstring>
#include<cctype>
#include<algorithm>
#include<cstdlib>
#define maxn 11
#define maxm 55
inline long long read(){
long long num=,f=;
char ch=getchar();
while(!isdigit(ch)){
if(ch=='-') f=-;
ch=getchar();
}
while(isdigit(ch)){
num=num*+ch-'';
ch=getchar();
}
return num*f;
} double f[<<maxn][maxm];
int q[<<maxn][<<maxn];
bool vis[<<maxn][maxm]; double dfs(int state,int t){
if(state==) return ;
if(vis[state][t]) return f[state][t];
vis[state][t]=;
double &ans=(f[state][t]=.);
for(int sta=(state-)&state;sta!=state;sta=(sta-)&state)
if(sta&){
ans+=1.0/(t+q[sta][state&(~sta)]+);
ans-=dfs(sta,t+q[sta][state&(~sta)]);
}
return ans;
} int main(){
int n=read(),m=read();
int Max=<<n;
for(int i=;i<=m;++i){
int a=read(),b=read();
a--;b--;
for(int sta=;sta<Max;++sta){
if(((sta>>a)&)==) continue;
for(int stb=;stb<Max;++stb){
if(((stb>>b)&)==) continue;
q[sta][stb]++; q[stb][sta]++;
}
}
}
printf("%.6lf",dfs(Max-,));
return ;
}

【Luogu】P3343地震后的幻想乡(对积分概率进行DP)的更多相关文章

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

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

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

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

  3. 【BZOJ3925】地震后的幻想乡(期望概率DP,状压DP)

    题意:给定一张点数不超过10的无向连通图,每条边有一个[0,1]之间的随机权值,求最小生成树上最大边的期望值 提示:对于n个[0,1]之间的随机变量x1,x2,...,xn,第k小的那个的期望值是k/ ...

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

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

  5. 「ZJOI2015」地震后的幻想乡 解题报告

    「ZJOI2015」地震后的幻想乡 想了半天,打开洛谷题解一看,最高票是_rqy的,一堆密密麻麻的积分差点把我吓跑. 据说有三种解法,然而我只学会了一种最辣鸡的凡人解法. 题意:给一个无向图\(G\) ...

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

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

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

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

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

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

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

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

随机推荐

  1. java面试题(杨晓峰)---第八讲谈谈Vector,ArrayList,LinkedList有何区别?

    Vector,ArrayList,LinkedList均为线性的数据结构,但是从现实方式与应用场景中又存在差别. 1 底层实现方式 ArrayList内部数组来实现,LinkedList内部采用双向链 ...

  2. 如何在Netweaver SE16里直接查看某数据库行记录

    有的数据库表字段类型为RAWSTRING, 包含的是XML的二进制内容,无法直接在SE16里显示. 如果确实想看其内容,怎么办?在下面SE16页面的命令提示栏输入命令/h, 回车进入调试模式.然后双击 ...

  3. 通过Java代码实现图片的放大和缩小

    本文介绍的例子在Android安卓手机上测试通过. 先看看效果吧.可以看到这个开发好的安卓应用有三个按钮:Zoom In缩小图片,Zoom Out放大图片和Save保存. 初始页面: 可以在左边边框自 ...

  4. 将Java应用部署到SAP云平台neo环境的两种方式

    方法1 - 使用Eclipse Eclipse里新建一个服务器: 服务器类型选择SAP Cloud Platform: 点Finish,成功创建了一个Server: Eclipse里选择要部署的项目, ...

  5. 2002-2003 ACM-ICPC Northeastern European Regional Contest (NEERC 02) H Heroes Of Might And Magic (隐含dp)

    问题是求一个方案,实际隐含一个dp.法力是递减的,所以状态是DAG,对于一个确定的状态,我们贪心地希望英雄的血量尽量大. 分析:定义状态dp[i][p][h]表示是已经用了i的法力值,怪兽的位置在p, ...

  6. Distinct Values(贪心)

    问题 D: Distinct Values 时间限制: 1 Sec  内存限制: 128 MB提交: 13  解决: 5[提交] [状态] [讨论版] [命题人:admin] 题目描述 Chiaki ...

  7. Xcode 的expression命令

    expression命令是执行一个表达式,并将表达式返回的结果输出,是LLDB调试命令中最重要的命令,也是我们常用的 p 和 po 命令的 鼻祖. 他主要有2个功能 (1) 执行表达式 举例:改变视图 ...

  8. [LUOGU] P2634 [国家集训队]聪聪可可

    点分治裸题,甚至不需要栈回撤. 尝试用容斥写了一波,就是把所有子树混一块计算,最后减去子树内路径条数. #include<iostream> #include<cstring> ...

  9. 点击tr实现选择checkbox功能,点击checkobx的时候阻止冒泡事件, jquery给checkbox添加checked属性或去掉checked属性不能使checkobx改变状态

    给tr添加点击事件,使用find方法查找tr下的所有层级的元素,children只查找下一层级的元素,所以使用find.find的返回值为jquery对象,在这个项目中不知道为什么使用jquery给c ...

  10. PHP数组函数 array_multisort() ----对多个数组或多维数组进行排序

    PHP中array_multisort可以用来一次对多个数组进行排序,或者根据某一维或多维对多维数组进行排序. 关联(string)键名保持不变,但数字键名会被重新索引. 输入数组被当成一个表的列并以 ...