P3317 [SDOI2014]重建(Matrix-tree+期望)
详情看这位神犇的blog
剩下的注释在code里吧.......
#include<iostream>
#include<cstdio>
#include<cstring>
#include<cmath>
using namespace std;
typedef double db;
const db eps=1e-;
db d[][],ans=1.0;
int n;
db det(){//矩阵树定理板子,计算行列式
db re=1.0,div;
for(int i=;i<n;++i){
int x=i;
for(int j=i+;j<n;++j)
if(d[j][i]>d[x][i]) x=j;
if(x!=i) re=-re,swap(d[x],d[i]);
for(int j=i+;j<n;++j){
div=d[j][i]/d[i][i];
for(int u=i;u<n;++u)
d[j][u]-=d[i][u]*div;
}re*=d[i][i];
if(fabs(re)<eps) break;
}return re;
}
int main(){
scanf("%d",&n);
for(int i=;i<=n;++i)
for(int j=;j<=n;++j){
scanf("%lf",&d[i][j]);
if(i==j) continue;
if(fabs(d[i][j])<eps) d[i][j]=eps;
if(fabs(1.0-d[i][j])<eps) d[i][j]=1.0-eps;//防止分母出现inf的情况
if(i<j) ans*=(1.0-d[i][j]);//不要重复算
d[i][j]=d[i][j]/(1.0-d[i][j]);
}
for(int i=;i<=n;++i){//构造基尔霍夫矩阵
d[i][i]=0.0;
for(int j=;j<=n;++j)
if(i!=j) d[i][i]+=d[i][j],d[i][j]=-d[i][j];//度数矩阵+=边权,邻接矩阵为负边权
}ans*=det();
printf("%.10lf",ans);
return ;
}
P3317 [SDOI2014]重建(Matrix-tree+期望)的更多相关文章
- BZOJ 3534: [Sdoi2014]重建(Matrix Tree)
传送门 解题思路 比较容易看的出来矩阵树定理.然后就怒送一Wa,这个矩阵树定理是不能直接用的.题目要求的其实是这个玩意. \[ ans=\sum\limits_{Tree}( \prod\limits ...
- 洛谷P3317 [SDOI2014]重建 [Matrix-Tree定理]
传送门 思路 相信很多人像我一样想直接搞Matrix-Tree定理,而且还过了样例,然后交上去一分没有. 但不管怎样这还是对我们的思路有一定启发的. 用Matrix-Tree定理搞,求出的答案是 \[ ...
- P3317 [SDOI2014]重建 变元矩阵树定理 高斯消元
传送门:https://www.luogu.org/problemnew/show/P3317 这道题的推导公式还是比较好理解的,但是由于这个矩阵是小数的,要注意高斯消元方法的使用: #include ...
- P3317 [SDOI2014]重建
思路 变元矩阵树定理可以统计最小生成树边权积的和,将A矩阵变为边权,D变为与该点相连的边权和,K=D-A,求K的行列式即可 把式子化成 \[ \begin{align}&\sum_{T}\pr ...
- 题解 P3317 [SDOI2014]重建
题解 前置芝士:深度理解的矩阵树定理 矩阵树定理能求生成树个数的原因是,它本质上求的是: \[\sum_T \prod_{e\in T} w_e \] 其中 \(w_e\) 是边权,那么我们会发现其实 ...
- 一篇自己都看不懂的Matrix tree总结
Matrix tree定理用于连通图生成树计数,由于博主太菜看不懂定理证明,所以本篇博客不提供\(Matrix\ tree\)定理的证明内容(反正这个东西背结论就可以了是吧) 理解\(Matrix\ ...
- @总结 - 7@ 生成树计数 —— matrix - tree 定理(矩阵树定理)与 prüfer 序列
目录 @0 - 参考资料@ @0.5 - 你所需要了解的线性代数知识@ @1 - 矩阵树定理主体@ @证明 part - 1@ @证明 part - 2@ @证明 part - 3@ @证明 part ...
- SPOJ.104.Highways([模板]Matrix Tree定理 生成树计数)
题目链接 \(Description\) 一个国家有1~n座城市,其中一些城市之间可以修建高速公路(无自环和重边). 求有多少种方案,选择修建一些高速公路,组成一个交通网络,使得任意两座城市之间恰好只 ...
- BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...
随机推荐
- Laravel中路由怎么写(一)
1.路由基本使用示例 1.1 默认示例 Laravel中所有路由定义在/app/Http/routes.php文件中,该文件默认定义了应用的首页路由: Route::get('/', function ...
- Maven中的-D(Properties属性)和-P(Profiles配置文件)
-D代表(Properties属性) 使用命令行设置属性-D的正确方法是: mvn -DpropertyName=propertyValue clean package 如果propertyName不 ...
- 获取 Google USB 驱动程序
获取 Google USB 驱动程序 另请参阅 安装 USB 驱动程序 使用硬件设备 使用任何 Google Nexus 设备进行 ADB 调试时,只有 Windows 需要 Google ...
- python tkinter Treeview 事件绑定
def trefun(event): sels= event.widget.selection()#event.widget获取Treeview对象,调用selection获取选择对象名称 for i ...
- ajax提交完表单数据依然跳转的解决办法
1. 既然ajax提交数据,就把表单里面submit按钮换掉,因为触发submit他就会跳转页面 提交的时候他会先触发ajax 再触发submit的提交 2.如果确定了表单没有submit,那么把提交 ...
- sourceInsight工具移除不掉项目 source Insight Add and Remove Project Files
问题描述: sourceInsight创建的项目,有时候会遇到Remove Project 报错,移除不成功的情况. 解决办法: 进入到sourceinsight的安装目录.删除掉保存的工程文件信息即 ...
- 000-js判断电脑或手机登录
<script type="text/javascript"> try{ if(/Android|webOS|iPhone|iPod|BlackBerry/i.test ...
- 在运行create_list.sh时候报错:AttributeError: 'module' object has no attribute 'LabelMap'
Traceback (most recent call last):File "/opt/xuben-project/caffe/data/VOC0712/../../scripts/cre ...
- Keras 资料
http://www.360doc.com/content/17/0415/12/1489589_645772879.shtml http://adventuresinmachinelearning. ...
- Python -- print(dataframe)时,省略部分列。
import pandas as pd # 导入后加入以下列,再显示时显示完全. pd.set_option('display.max_rows',500) pd.set_option('displa ...