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

题面

BZOJ
洛谷

题解

题目里面有一句提示:对于\(n\)个\([0,1]\)之间的随机变量\(x1,x2,...,xn\),第\(k\)小的那个的期望值是\(k/(n+1)\)。
显然要求的东西就是一棵最小生成树最大边的期望。而求解最小生成树只需要知道边的排名以及当前点之间的连通性。因为我们知道第\(k\)小的值的期望,所以我们只需知道最小生成树做到了第几条边时联通。那么需要求解的只有在连完第\(k\)条边只有连通的方案数了。
预处理点集内部的方案数,假设为\(cnt(S)\),设\(f[i][S][0/1]\)表示对于点集\(S\)而言,选择了其中\(i\)条边之后连通或者不连通的方案数。
首先很显然,连通和不连通的方案数总和就是任意选择边的方案数。
即\(\displaystyle f[i][S][0]+f[i][S][1]={cnt(S)\choose i}\)。
那么考虑如何计算\(dp\)值。
如果我们要算不连通的方案数,那么我们枚举其中一个定点所在的连通块,那么这个连通块不能和其他点之间有连边,可以得到转移:\(\displaystyle f[i+j][S][0]=\sum f[i][T][1]*{cnt(S-T)\choose j}\)
而连通的方案数则直接用前面那个总方案减去不连通的就好了。
那么最终计算答案的时候,枚举用了几条边\(\displaystyle ans=\frac{1}{m+1}\sum_{i=0}^m \frac{f[i][All][0]}{m\choose i}\)

#include<iostream>
#include<cstdio>
using namespace std;
inline int read()
{int x=0;bool t=false;char ch=getchar();while((ch<'0'||ch>'9')&&ch!='-')ch=getchar();if(ch=='-')t=true,ch=getchar();while(ch<='9'&&ch>='0')x=x*10+ch-48,ch=getchar();return t?-x:x;
}
int n,m,S,bul[1<<10],cnt[1<<10],G[10],lg[1<<10];
long long f[50][1<<10][2],C[50][50];
double ans;
int lb(int x){return x&(-x);}
int main()
{n=read();m=read();S=1<<n;for(int i=0;i<=m;++i)C[i][0]=1;for(int i=1;i<=m;++i)for(int j=1;j<=i;++j)C[i][j]=C[i-1][j-1]+C[i-1][j];for(int i=1;i<S;++i)bul[i]=bul[i>>1]+(i&1);for(int i=2;i<S;++i)lg[i]=lg[i>>1]+1;for(int i=1,u,v;i<=m;++i)u=read()-1,v=read()-1,G[u]|=1<<v,G[v]|=1<<u;for(int i=1;i<S;++i)cnt[i]=cnt[i^lb(i)]+bul[G[lg[lb(i)]]&i];for(int i=1;i<S;++i)f[0][i][bul[i]==1]=1;for(int i=1;i<=m;++i)for(int T=1;T<S;++T){int TT=T^lb(T),u=lb(T);for(int P=(TT-1)&TT;;P=(P-1)&TT){for(int j=0;j<=i;++j)f[i][T][0]+=f[j][P|u][1]*C[cnt[TT^P]][i-j];if(!P)break;}f[i][T][1]=C[cnt[T]][i]-f[i][T][0];}for(int i=0;i<=m;++i)ans+=1.0*f[i][S-1][0]/C[m][i];ans/=m+1;printf("%.6lf\n",ans);return 0;
}

转载于:https://www.cnblogs.com/cjyyb/p/10223688.html

【BZOJ3925】[ZJOI2015]地震后的幻想乡(动态规划)相关推荐

  1. 3925: [Zjoi2015]地震后的幻想乡

    3925: [Zjoi2015]地震后的幻想乡 Time Limit: 10 Sec   Memory Limit: 256 MB Submit: 615   Solved: 362 [ Submit ...

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

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

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

    problem luogu-P3343 solution dp(i):dp(i):dp(i): 当恰好加入第 iii 小边时候,所有点联通的方案数. 则 ans=∑idpi(mi)im+1ans=\s ...

  4. BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)

    CLJ就是喜欢出ctsc上讲的东西,看来还是得找时间把他的那几道题做下 首先记f(x)为答案>x的概率,那么把这个东西从0到1积分就是答案了 f(x)<=>边小于x不能使图联通的概率 ...

  5. BZOJ 3925 [Zjoi2015]地震后的幻想乡

    题目:http://www.lydsy.com/JudgeOnline/problem.php?id=3925 题意:给定一个 n n点mm边的无向图,没有重边和自环,每条边的权值为 [0,1] [0 ...

  6. P3343-[ZJOI2015]地震后的幻想乡【dp,数学期望】

    正题 题目链接:https://www.luogu.com.cn/problem/P3343 题目大意 给出nnn个点的一张无向图,每条边被修复的时间是[0,1][0,1][0,1]的一个随机实数,求 ...

  7. 【Luogu】P3343地震后的幻想乡(对积分概率进行DP)

    题目链接 神难qwq.配合rqy的博客食用. 首先我们学到有一个概率函数$p(x)$表示某事件发生概率取值小于x的函数.这个函数有什么特点呢? 那就是$\int_{-∞}^{∞}p(x)dx=1$ 这 ...

  8. 【ZJOI2015】醉醺醺的幻想乡 题解

    浙江神选的划时代意义的究极神仙题,感谢 qlz 神仙的无私帮助. Description 传送门 Solution 算法一 第一问很容易想到网络流解决,考虑第二问.然而,费用的计算式并不是普通的一次函 ...

  9. [Zjoi2015]诸神眷顾的幻想乡

    [Zjoi2015]诸神眷顾的幻想乡 Time Limit: 10 Sec  Memory Limit: 512 MB Submit: 1537  Solved: 892 Description 幽香 ...

最新文章

  1. php laravel 框架 APP_KEY 的作用
  2. django学习资料网址汇总
  3. 根据数组建立平衡二叉搜索树
  4. 我爱计算机视觉干货集锦分类汇总(2019年6月17日)
  5. 折叠list ExpandableList+ BaseExpandableListAdapter 自定义 折叠列表
  6. c语言从入门到精通的几个阶段
  7. jeecg框架表格合计解决方案
  8. Mac安装brew,安装wget
  9. 获取当前经纬度 和 通过经纬度 得到大致位置的接口
  10. 阿里云服务器上海地域和杭州节点区别对比
  11. 阿里云视频点播解密DecryptKMSDataKeyRequest爬坑
  12. win10每次开机桌面计算机就没有,怎样解决Win10开机需要按F1才能进入桌面
  13. 国际学校入学考试MAP语法测试题真题讲解
  14. 电脑族保护视力的窍门
  15. 网络安全红队常用的攻击方法及路径
  16. ESC32硬件---电路分析二(电流检测和反电动势检测)
  17. mac 搭建Elasticsearch 6.8.6
  18. 国外小项目,简单小项目赚美金,1个任务10秒,让你轻松赚美金,2022副业轻松赚钱
  19. mysql 函数 人民币大写_SQL Server中文大写金额转化函数
  20. 拍什么内容发抖音会火?没粉丝的完全可以学习

热门文章

  1. Java常用工具类-发短信(集成云通信的企业信使短信平台)
  2. SQLservet使用DATEADD获取一小时前的时间
  3. Android 网络性能优化(4)弱网优化
  4. 小常识10: 循环神经网络(RNN)与长短时记忆网络LSTM简介。
  5. 投票服务器维护时间,2021年06月21日维护预览,合服投票结果公布! ​
  6. 如何将C/C++代码转成webassembly(Linux环境)
  7. 查看固态硬盘数据写入量
  8. 【滤波跟踪】基于Huber函数和最大相关熵的抗差滤波算法实现GNSS导航定位粗差处理附matlab代码
  9. 图像去模糊算法代码实践!
  10. 国内常用git仓库 中文gitlab