博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
[SDOI2014]重建
阅读量:4654 次
发布时间:2019-06-09

本文共 1273 字,大约阅读时间需要 4 分钟。

直接M-T肯定不对

推出的是对于所有树的生成概率的和,可以考虑行列式的期望,再交换求和号即可

同时乘上π(1-P)再变化初始的概率就有点厉害了

一种变化的技巧

代码:

#include
#define il inline#define reg register int#define numb (ch^'0')#define ld long doubleusing namespace std;typedef long long ll;il void rd(int &x){ char ch;bool fl=false; while(!isdigit(ch=getchar()))(ch=='-')&&(fl=true); for(x=numb;isdigit(ch=getchar());x=x*10+numb); (fl==true)&&(x=-x);}namespace Miracle{const int N=55;const double eps=1e-8;ld G[N][N],f[N][N];int n;ld GUASS(int n){ for(reg i=1;i<=n;++i){ int id=0; for(reg j=i;j<=n;++j){ if(fabs(f[j][i])>fabs(f[id][i])) id=j; } if(id!=i){ for(reg j=i;j<=n;++j){ swap(f[i][j],f[id][j]); } } for(reg k=i+1;k<=n;++k){ if(fabs(f[k][i])>eps){ ld tmp=f[k][i]/f[i][i]; for(reg j=i;j<=n;++j){ f[k][j]-=f[i][j]*tmp; } } } } ld ret=1.00; for(reg i=1;i<=n;++i){ ret=ret*f[i][i]; } return ret;}int main(){ rd(n); ld tmp=1.00; for(reg i=1;i<=n;++i) { for(reg j=1;j<=n;++j){ scanf("%Lf",&G[i][j]); if(fabs(G[i][j])

 

转载于:https://www.cnblogs.com/Miracevin/p/10421305.html

你可能感兴趣的文章
通过取父级for循环的i来理解闭包,iife,匿名函数
查看>>
HDU 3374 String Problem
查看>>
数据集
查看>>
[Leetcode] unique paths ii 独特路径
查看>>
HDU 1217 Arbitrage (Floyd + SPFA判环)
查看>>
IntelliJ idea学习资源
查看>>
Django Rest Framework -解析器
查看>>
ExtJs 分组表格控件----监听
查看>>
Hibernate二级缓存配置
查看>>
LoadRunner常用术语
查看>>
关于jedis2.4以上版本的连接池配置,及工具类
查看>>
记忆讲师石伟华微信公众号2017所有文章汇总(待更新)
查看>>
mechanize (1)
查看>>
FactoryBean
查看>>
Coolite动态加载CheckboxGroup,无法在后台中获取
查看>>
如何在我们项目中利用开源的图表(js chart)
查看>>
nfs服务器工作原理
查看>>
C3P0连接池工具类使用
查看>>
SVN常用命令备注
查看>>
孩子教育
查看>>