传送门

解题思路

  比较容易看的出来矩阵树定理。然后就怒送一Wa,这个矩阵树定理是不能直接用的。题目要求的其实是这个玩意。

\[ans=\sum\limits_{Tree}( \prod\limits_{e\in Tree}p_e*\prod\limits_{e\notin Tree}(1-p_e))
\]

而矩阵树能求的东西本质上其实是每棵生成树的积的和,说人话就是这个。

\[now=\sum\limits_{Tree}\prod\limits_{e\in Tree}w_e
\]

这个形式跟上面那个很像,但还是有点不一样。我们考虑将上面那个式子化简。根据

\[\prod\limits_{e\notin Tree}(1-p_e)=\frac{\prod\limits_e (1-p_e)}{\prod\limits_{e\in Tree}(1-p_e)}
\]

把这玩意往最上面那个式子里一带,神奇的事情发生了:

\[ans=\prod\limits_e(1-p_e)*\sum\limits_{Tree} \frac{\prod\limits_{e\in Tree}p_e}{\prod\limits_{e\in Tree}(1-p_e)}
\]

前面这个玩意可以直接算出来。后头这个玩意直接上矩阵树,把邻接矩阵的边权改成\(\frac{p_e}{1-p_e}\)就行了。

通过这道题,让我们明白了原来矩阵树里的那个边权是可以自己规定的,算出来的结果为每个生成树的积之和。

#include<iostream>
#include<cstdio>
#include<cstring>
#include<cstdlib>
#include<algorithm>
#include<cmath> using namespace std;
const int MAXN = 55;
const double eps = 1e-8; int n;
double ans=1.0,base=1.0,f[MAXN][MAXN]; inline void Matrix_tree(){
double t;int p;
for(int i=1;i<n;i++){
p=i;
for(int j=i+1;j<n;j++)
if(fabs(f[p][i])<fabs(f[j][i])) p=j;
if(p!=i) swap(f[i],f[p]);
for(int j=i+1;j<n;j++){
t=f[j][i]/f[i][i];
for(int k=i;k<n;k++)
f[j][k]-=t*f[i][k];
}
ans*=f[i][i];
}
} int main(){
scanf("%d",&n);
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++){
scanf("%lf",&f[i][j]);if(i==j) continue;
if(f[i][j]>1.0-eps) f[i][j]-=eps;
if(i>j && f[i][j]>eps) base*=(1-f[i][j]);
f[i][j]=f[i][j]/(1-f[i][j]);
}
for(int i=1;i<=n;i++)
for(int j=1;j<=n;j++)if(i!=j)
f[i][i]+=f[i][j],f[i][j]=-f[i][j];
Matrix_tree();printf("%.10lf",ans*base);
return 0;
}

最新文章

  1. DDD 领域驱动设计-三个问题思考实体和值对象(续)
  2. flume从kafka中读取数据
  3. Android剪贴板操作----ClipboardManager
  4. 从KRE到XRE:ASP.NET 5中正在消失的那些K
  5. 我的ElasticSearch集群部署总结--大数据搜索引擎你不得不知
  6. jquery slide使用总结
  7. Tomcat目录结构及Tomcat Server处理一个http请求的过程
  8. Servlet 生命周期、工作原理
  9. scp远程复制
  10. nginx 配置优化的几个参数
  11. Jquery-Ajax常用总结
  12. Eclipse常用插件推荐
  13. 工作中遇到的浏览器差别(就不叫IE6bug了)
  14. Node.js学习 - Buffer
  15. 真分布式SolrCloud+Zookeeper+tomcat搭建、索引Mysql数据库、IK中文分词器配置以及web项目中solr的应用(1)
  16. 【转】从源码分析Handler的postDelayed为什么可以延时?
  17. 记数据库数据文件损坏恢复ORA-00376+ORA-01110
  18. 20175325 《JAVA程序设计》实验一 《JAVA开发环境的熟悉》实验报告
  19. python代码块,小数据池,驻留机制深入剖析
  20. Java知多少(89)列表和组合框

热门文章

  1. Java中的时间日期Date和Calendar
  2. img引用网络图片资源无法加载问题解决
  3. 数字三角形W(加强版) codevs 2189
  4. NGINX配置之一:日志篇
  5. 【系统安全性】二、Web攻击与防范
  6. (转)OpenFire源码学习之二十七:Smack源码解析
  7. nginx代理一个服务器上所有域名
  8. 谈谈-Android Studio 调试功能
  9. 浅谈HP-Socket在物联网的应用
  10. 截取url中的某个字符串后面的值