【BZOJ 3534】: [Sdoi2014]重建
题目大意:(略)
题解:
相对误差……我好方。
考虑答案应该为所有合法答案概率之和。对于一个合法的生成树,其出现概率应为所有选取边的概率出现的积 乘以 所有未选取边不出现概率的积。
即:
$\;\prod_{e\in tree} p_e\prod_{e\notin tree}1-p_e$
$=\prod_{e\in tree}\frac{p_e}{1-p_e}\prod_{e}1-p_e$
然后按照新边权列行列式即可。
代码:
#include "bits/stdc++.h" using namespace std; const double eps=1e-; const int N=; int n;
double a[N][N]; double det(){
double res=;
for(int i=;i<=n;++i)
for(int j=;j<=n;++j)
if(i!=j) a[i][i]+=a[i][j],a[i][j]=-a[i][j];
for(int i=;i<n;++i){
int p=i;
for(int j=i+;j<n;++j) if(fabs(a[j][i])>fabs(a[p][i]))p=j;
if(fabs(a[p][i])<eps) return 0.0;
if(p!=i) {for(int j=i;j<n;++j) swap(a[p][j],a[i][j]);res=-res;}
for(int j=i+;j<n;++j){
double t=a[j][i]/a[i][i];
for(int k=i;k<n;++k)
a[j][k]-=a[i][k]*t;
}
res*=a[i][i];
}
return res;
} int main(){
double ans,tmp=;
scanf("%d",&n);
for(int i=;i<n;++i){
for(int j=;j<n;++j){
scanf("%lf",&a[i][j]);
if(i==j) continue;
if(a[i][j]+eps>1.0) a[i][j]-=eps;
if(i<j) tmp*=-a[i][j];
a[i][j]/=-a[i][j];
}
}
--n;
ans=det()*tmp;
printf("%.10f\n",ans); }
【BZOJ 3534】: [Sdoi2014]重建的更多相关文章
- bzoj 3534: [Sdoi2014]重建【矩阵树定理】
啊啊啊无脑背过果然不可取 比如这道题就不会写 参考:https://blog.csdn.net/iamzky/article/details/41317333 #include<iostream ...
- [bzoj 3534][Sdoi2014] 重建
传送门 Description T国有N个城市,用若干双向道路连接.一对城市之间至多存在一条道路. 在一次洪水之后,一些道路受损无法通行.虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传 ...
- BZOJ 3534: [Sdoi2014]重建(Matrix Tree)
传送门 解题思路 比较容易看的出来矩阵树定理.然后就怒送一Wa,这个矩阵树定理是不能直接用的.题目要求的其实是这个玩意. \[ ans=\sum\limits_{Tree}( \prod\limits ...
- 【BZOJ 3534】 3534: [Sdoi2014]重建 (Matrix-Tree Theorem)
3534: [Sdoi2014]重建 Time Limit: 10 Sec Memory Limit: 512 MBSec Special JudgeSubmit: 709 Solved: 32 ...
- P3317 [SDOI2014]重建(Matrix-tree+期望)
P3317 [SDOI2014]重建 详情看这位神犇的blog 剩下的注释在code里吧....... #include<iostream> #include<cstdio> ...
- BZOJ 2957楼房重建
传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include< ...
- BZOJ 3534 重建
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3534 题意:给定一个无向图,每条边有选择概率P:求选出的边恰是一棵生成树的概率. 思路: ...
- BZOJ 3529: [Sdoi2014]数表 [莫比乌斯反演 树状数组]
3529: [Sdoi2014]数表 Time Limit: 10 Sec Memory Limit: 512 MBSubmit: 1399 Solved: 694[Submit][Status] ...
- BZOJ 3531: [Sdoi2014]旅行 [树链剖分]
3531: [Sdoi2014]旅行 Time Limit: 20 Sec Memory Limit: 512 MBSubmit: 1685 Solved: 751[Submit][Status] ...
随机推荐
- Python_@修饰器(装饰器)的理解
装饰器本质上是一个Python函数,它可以让其他函数在不需要做任何代码变动的前提下增加额外功能. 装饰器的作用就是为已经存在的对象添加额外的功能. def funA(fun): print (fun( ...
- path sum II(深度优先的递归实现掌握)
Given a binary tree and a sum, find all root-to-leaf paths where each path's sum equals the given su ...
- 排序算法入门之堆排序(Java实现)
堆排序 在学习了二叉堆(优先队列)以后,我们来看看堆排序.堆排序总的运行时间为O(NlonN). 堆的概念 堆是以数组作为存储结构. 可以看出,它们满足以下规律: 设当前元素在数组中以R[i]表示,那 ...
- VS报错 error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义
链接报错: 错误 33 error LNK2005: _DllMain@12 已经在 MSVCRTD.lib(dllmain.obj) 中定义 E:\客户问题\w_王鹏\EventLibTest_Ti ...
- Django之AppConfig源码学习
class AppConfig(object) 这个基类描述了一个Django应用以及它的配置信息. 属性: name:django应用的完整python路径,eg.'django.contrib.a ...
- AngularJS + RequireJS
http://www.startersquad.com/blog/AngularJS-requirejs/ While delivering software projects for startup ...
- require.js添加css文件实现代码:css.min.js
define( function () { if (typeof window == "undefined")return { load: function (n, r, load ...
- Spring-mvc设置@RequestMapping标签更改返回头及@RequestMapping简述
1. 引子:设置返回头 2. 简述 3. value 4. method 5. consumes/produces 6. params 7. headers 1. 引子:设置返回头 返回JSON内容时 ...
- hive------ Group by、join、distinct等实现原理
1. Hive 的 distribute by Order by 能够预期产生完全排序的结果,但是它是通过只用一个reduce来做到这点的.所以对于大规模的数据集它的效率非常低.在很多情况下,并不需要 ...
- CentOS在线安装RabbitMQ3.7
一.通过yum命令在线安装RabbitMQ yum在线安装,简单.快捷.自动安装相关依赖包. 1.安装Erlang环境(RabbitMQ由Erlang语言开发) 1.1)下载rpm安装包 官方地址:h ...