【Luogu】P3343地震后的幻想乡(对积分概率进行DP)
神难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)的更多相关文章
- 洛谷 P3343 - [ZJOI2015]地震后的幻想乡(朴素状压 DP/状压 DP+微积分)
题面传送门 鸽子 tzc 竟然来补题解了,奇迹奇迹( 神仙题 %%%%%%%%%%%% 解法 1: 首先一件很明显的事情是这个最小值可以通过类似 Kruskal 求最小生成树的方法求得.我们将所有边按 ...
- 【BZOJ3925】[ZJOI2015] 地震后的幻想乡(状压期望DP)
点此看题面 大致题意: 有\(n\)个点和\(m\)条边,每条边的权值是一个\(0\sim1\)的随机实数,要你用\(n-1\)条边将图联通,问这\(n-1\)条边中边权最大值的期望最小值. 提示 这 ...
- 【BZOJ3925】地震后的幻想乡(期望概率DP,状压DP)
题意:给定一张点数不超过10的无向连通图,每条边有一个[0,1]之间的随机权值,求最小生成树上最大边的期望值 提示:对于n个[0,1]之间的随机变量x1,x2,...,xn,第k小的那个的期望值是k/ ...
- 【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)
[BZOJ3925][ZJOI2015]地震后的幻想乡(动态规划) 题面 BZOJ 洛谷 题解 题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第 ...
- 「ZJOI2015」地震后的幻想乡 解题报告
「ZJOI2015」地震后的幻想乡 想了半天,打开洛谷题解一看,最高票是_rqy的,一堆密密麻麻的积分差点把我吓跑. 据说有三种解法,然而我只学会了一种最辣鸡的凡人解法. 题意:给一个无向图\(G\) ...
- [bzoj3925] [洛谷P3343] [ZJOI2015] 地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
- [ZJOI2015]地震后的幻想乡(期望+dp)
题目描述 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任务是尽快让幻想 ...
- BZOJ3925: [Zjoi2015]地震后的幻想乡【概率期望+状压DP】
Description 傲娇少女幽香是一个很萌很萌的妹子,而且她非常非常地有爱心,很喜欢为幻想乡的人们做一些自己力所能及的事情来帮助他们. 这不,幻想乡突然发生了地震,所有的道路都崩塌了.现在的首要任 ...
随机推荐
- HDU 4738 Caocao's Bridges taijan (求割边,神坑)
神坑题.这题的坑点有1.判断连通,2.有重边,3.至少要有一个人背*** 因为有重边,tarjan的时候不能用子结点和父节点来判断是不是树边的二次访问,所以我的采用用前向星存边编号的奇偶性关系,用^1 ...
- 激光推送报错:APNs is not available,please check your provisioning profile and certification 和 设置别名问题 app not registed, give up set tag:
前几天,项目中用到了推送功能,就集成了激光,遇到了2个问题,就给大家分享一下, 第一个问题: 在集成的过程是按照激光的文档做的,但是最后配置完了,一运行,就打印出这么一句话, APNs is not ...
- 第1节 flume:12、flume的load_balance实现机制
1.5.flume的负载均衡load balancer 负载均衡是用于解决一台机器(一个进程)无法解决所有请求而产生的一种算法.Load balancing Sink Processor 能够实现 l ...
- 采用maven 对tomcat 进行自动部署
在工作过程中经常会遇到项目频繁发不到额过程,而且在这个过程中会一直进行一些简单但是繁琐的重复性工程 1.打war 包 2.停掉tomcat 3.copy war 包 4.启动tomcat 听说mave ...
- redis的一个bug
清楚redis缓存的时候,出现以下问题: (error) MISCONF Redis is configured to save RDB snapshots, but is currently not ...
- odoo10 api 装饰器
http://www.cnblogs.com/kfx2007/p/3894297.html one:装饰record-style方法中的self为单一实例,被装饰的方法将会在每一条记录中循环调用,返回 ...
- springBoot 集成swagger2.9.2
加依赖 <!-- https://mvnrepository.com/artifact/io.springfox/springfox-swagger-ui --> <dependen ...
- 配置wamp开发环境之mysql的配置
此前我已经将wamp配置的Apache.PHP.phpmyadmin全部配置完成,以上三种配置参照 配置wamp开发环境 下面我们来看看mysql的配置,这里用的是mysql5.5.20,下载地址: ...
- jQuery将物体居中,并且转换显示和隐藏
今天来给大家贴一段代码,代码的作用就是利用jQuery将物体居中,并且转换显示和隐藏: 首先建立一个div标签并且写好css样式,具体如下 然后我想要的效果是当我点击了button这个按钮,test可 ...
- 下载旧版本的JDK
下载旧版本的JDK 有的时候我们需要去下载旧版本的JDK,但是进入Oracle官网,显示的总是新版的JDK,这里告诉大家怎么样去下载旧版本的JDK. 首先去JavaSE的 下载界面 拉到最下面,找到这 ...