CLJ就是喜欢出ctsc上讲的东西,看来还是得找时间把他的那几道题做下

首先记f(x)为答案>x的概率,那么把这个东西从0到1积分就是答案了

f(x)<=>边小于x不能使图联通的概率

这个有点难求,考虑求使图联通的概率

记f(s)为集合s联通的概率,那么f(s)=1-sigma(f(s')*(1-x)^cnt) (s'属于s且s'一定包含某点k,cnt为链接s'与Cs s'的边数)

可以发现f(s)是个多项式,就可以积分了

由于还没用上64位评测系统,double还是不能过,只好用__float128,比较慢而已

CODE:

#include<cstdio>
#include<iostream>
#include<cstring>
#include<algorithm>
#include<vector>
using namespace std;
typedef vector<__float128> ploy;
ploy operator + (ploy x,ploy y){ploy ans(max(x.size(),y.size()),0);for (int i=0;i<ans.size();i++) {if (i<x.size()) ans[i]+=x[i];if (i<y.size()) ans[i]+=y[i];}return ans;
}
ploy operator - (ploy x,ploy y) {ploy ans(max(x.size(),y.size()),0);for (int i=0;i<ans.size();i++) {if (i<x.size()) ans[i]+=x[i];if (i<y.size()) ans[i]-=y[i];}return ans;
}
ploy operator * (ploy x,ploy y) {ploy ans(x.size()+y.size()-1,0);for (int i=0;i<x.size();i++) for (int j=0;j<y.size();j++) ans[i+j]+=x[i]*y[j];return ans;
}
bool b[1040];
ploy f[1040],quick[100];
int n,m;
struct edges{int x,y;}e[100];
ploy ONE(1,1);
inline void print(ploy x){printf("%d\n",x.size());for (int i=0;i<x.size();i++) printf("%lf ",double(x[i]));printf("\n");
}
void dp(int x){if (b[x]) return ;b[x]=1;ploy tmp(0,0);for (int i=1;i<(1<<n);i++) {if (!(i&1)) continue;if ((i&x)!=i) continue;if (i==x) continue;int j=x^i;int cnt=0;for (int k=1;k<=m*2;k++) if (i&(1<<e[k].x)&&j&(1<<e[k].y)) cnt++;dp(i);tmp=tmp+f[i]*quick[cnt];}f[x]=ONE-tmp;
}
__float128 cal(ploy x) {__float128 ans=0;for (int i=0;i<x.size();i++) ans+=x[i]*1.0/(i+1);return ans;
}
int main()    {scanf("%d%d",&n,&m);quick[0]=ONE;quick[1]=ploy(2,0);quick[1][0]=1;quick[1][1]=-1;for (int i=2;i<=m;i++) quick[i]=quick[i-1]*quick[1];for (int i=1;i<=m;i++) {int x,y;scanf("%d%d",&x,&y);x--,y--;e[i*2-1]=(edges){x,y};e[i*2]=(edges){y,x};}b[1]=1;f[1]=ONE;dp((1<<n)-1);ploy ans=ONE-f[(1<<n)-1];printf("%.6lf\n",double(cal(ans)));return 0;
}

转载于:https://www.cnblogs.com/New-Godess/p/4420861.html

BZOJ 3925: [Zjoi2015]地震后的幻想乡(概率)相关推荐

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

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

  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. 3925: [Zjoi2015]地震后的幻想乡

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

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

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

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

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

  6. [BZOJ]3926 诸神眷顾的幻想乡(ZJOI2015)

    听说大佬们都会后缀自动机. 小C看完SAM,想找个裸题练习一下模板.听说这题还是陈老师出的?(羊毛出在羊身上) Description  幽香是全幻想乡里最受人欢迎的萌妹子,这天,是幽香的2600岁生 ...

  7. ●BZOJ 4596 [Shoi2016]黑暗前的幻想乡

    题链: http://www.lydsy.com/JudgeOnline/problem.php?id=4596 题解: 容斥,矩阵树定理,矩阵行列式 先说说容斥:(一共有 N-1个公司) 令 f[i ...

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

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

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

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

最新文章

  1. Revit和Unreal Engine真实的建筑可视化视频教程
  2. Win10下MySQL_Workbench连接远程主机MySQL5.7
  3. C语言字符数组与字符串的使用及加结束符‘\0‘的问题
  4. xa协议 mysql_分布式事务XA实现数据一致性的协议与原理
  5. JavaScript- 正则表达式匹配汉字
  6. Django(part6)--利用正则的组名进行关键字传参
  7. 洛谷-P3203 弹飞绵羊 分块
  8. onTextChanged参数解释及实现EditText字数监听
  9. 关于DllRegisterServer的调用失败的问题解决办法 错误代码0x80040201
  10. 创建一个分布式网络爬虫的故事
  11. html涟漪效果,涟漪效果.html
  12. c++编译报错 error c2248: “xxx:xxx“:无法访问private成员(在“xxx“类中声明)
  13. [198].打家劫舍
  14. 基于pygame做的小游戏
  15. 解决重邮无法访问蓝鸽听力以及无法访问部分内网的解决方法
  16. 【Joshua B. Tenenbaum】非线性降维的全局几何框架
  17. Java基础语法(一)——初识Java
  18. 关于EDP触摸屏使用笔记
  19. DIY 联想Thinkpad E530C 安装固态硬盘(双硬盘)——步步图解
  20. 谈一谈仓库表单表设计

热门文章

  1. JS 动态显示 获取下拉框的多个值
  2. iframe页面找父页面的元素
  3. android 广播 关闭对话框,Android 对话框、信息提示和菜单
  4. java反射数组_java反射Array的使用
  5. (89)FPGA三分频设计,面试必问(十三)(第18天)
  6. (72)FPGA模块调用(VHDL调用Verilog)
  7. (63)FPGA二维数组(reg)
  8. (89)Verilog HDL系统函数和任务:$fwrite
  9. (2)zynq FPGA AXI_Lite总线介绍
  10. python3 在线工具_Curl转python在线工具