BZOJ 3534 重建
题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=3534
题意:给定一个无向图,每条边有选择概率P;求选出的边恰是一棵生成树的概率。
首先,将A[i][j]从01变成这条边的概率,然后a[i][i]减去每条有i的边的概率,对此求n-1阶主子式的行列式,
可以得到:Σ(p[i]*p[i+1]*p[i+2]*...p[n-1])(p代表某棵树的集合中,这个集合里每条边选中的概率)
可是,这个概率只与树边有关,却无法保证没有非树边
我们重新考虑,令原先加入的a[i][j]变成(a[i][j]/(1-a[i][j])),再令tmp=(1-p[1])*(1-p[2])*...(1-p[m]),然后求行列式,最后选中的树边的因子,都是P[i],不选中的非树边的因子是(1-p[i]),于是问题完美解决。
1 #include<algorithm> 2 #include<cstdio> 3 #include<cmath> 4 #include<cstring> 5 #include<iostream> 6 double a[505][505]; 7 const double eps=1e-10; 8 int n; 9 int zero(double x){ 10 if (x<-eps) return -1; 11 else return x>eps; 12 } 13 double gauss(){ 14 double res=1; 15 for (int i=1;i<=n;i++){ 16 int k=i; 17 for (int j=i+1;j<=n;j++) if (fabs(a[j][i])>fabs(a[k][i])) k=j; 18 if (k!=i){ 19 for (int j=1;j<=n;j++) std::swap(a[i][j],a[k][j]); 20 } 21 for (int j=i+1;j<=n;j++){ 22 double tmp=a[j][i]/a[i][i]; 23 for (int k=i;k<=n;k++) 24 a[j][k]-=a[i][k]*tmp; 25 } 26 if (!zero(a[i][i])) return 0; 27 } 28 for (int i=1;i<=n;i++) res*=a[i][i]; 29 return std::fabs(res); 30 } 31 int main(){ 32 scanf("%d\n",&n); 33 double tm=1; 34 for (int i=1;i<=n;i++) 35 for (int j=1;j<=n;j++){ 36 scanf("%lf",&a[i][j]); 37 if (i==j) continue; 38 if (a[i][j]>1-eps) a[i][j]-=eps; 39 if (i<j) tm*=1-a[i][j]; 40 a[i][j]/=1-a[i][j]; 41 } 42 for (int i=1;i<=n;i++) 43 for (int j=1;j<=n;j++) 44 if (i!=j) 45 a[i][i]-=a[i][j]; 46 n--; 47 printf("%.10lf\n",gauss()*tm); 48 }
转载于:https://www.cnblogs.com/qzqzgfy/p/5535807.html
BZOJ 3534 重建相关推荐
- [bzoj 3534][Sdoi2014] 重建
传送门 Description T国有N个城市,用若干双向道路连接.一对城市之间至多存在一条道路. 在一次洪水之后,一些道路受损无法通行.虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传回 ...
- 旧题新做:从idy的视角看数据结构
"今天你不写总结--!!!" 额-- 还是讲我的吧.这些考试都是idy出的题. 20170121:DFS序. ST表.线段树练习 这是第一次考数据结构. Problem 1. se ...
- 国内有哪些好用的 Online Judge
前言 很多 oier 和 acmer 都会去找一个比较好的 OJ 来刷题以提高自身的能力,而很多国外的网站极其不稳定,比如说 C 某和 V 某.所以很多人都会倾向于在国内 OJ 上刷题,那么国内有什么 ...
- BZOJ 2957楼房重建
传送门 线段树 //Twenty #include<cstdio> #include<cstdlib> #include<iostream> #include< ...
- [Luogu P4292] [BZOJ 1758] [WC2010]重建计划
BZOJ 传送门 洛谷传送门 题目描述 X国遭受了地震的重创, 导致全国的交通近乎瘫痪,重建家园的计划迫在眉睫.X国由NNN个城市组成, 重建小组提出,仅需建立N−1" role=" ...
- 【BZOJ—2957楼房重建】【连载:请在T台上微笑】
长久没有发博文了...对对对, 所以最近就趁着暑假多发发吧 颓废是革命的本钱: 推荐一个我喜欢的新连载漫画吧[请在T台上微笑] BZOJ 2957 [楼房重建] Description 小A的楼房外有 ...
- [luogu 4292][bzoj 1758][WC2010] 重建计划(点分治 + dp + 单调队列优化 + 启发式合并)
[WC2010]重建计划 problem solution code problem 洛谷指路 solution 一看那个道路平均价值的式子:AvgValue=∑e∈Sv(e)∣S∣\text{Avg ...
- bzoj 2957: 楼房重建(线段树+递归)
2957: 楼房重建 Time Limit: 10 Sec Memory Limit: 256 MB Submit: 2778 Solved: 1314 [Submit][Status][Disc ...
- BZOJ 2957: 楼房重建
Description 小A的楼房外有一大片施工工地,工地上有N栋待建的楼房.每天,这片工地上的房子拆了又建.建了又拆.他经常无聊地看着窗外发呆,数自己能够看到多少栋房子. 为了简化问题,我们考虑这些 ...
最新文章
- lisp pl线线段数_vlisp每日源码(标注多段线线长)
- 用js自动把url加入ubb代码的函数
- PostgreSQL GIN multi-key search 优化
- 更轻易地实现 Jwt Token
- 1609: [Usaco2008 Feb]Eating Together麻烦的聚餐
- 全数字实时仿真平台SkyEye经典案例——空间站项目
- ros 安装c++编译的可执行文件
- Docker与容器化-04-Docker私有仓库与镜像迁移备份
- pku1274 The Perfect Stall
- Eye Tracking Methodology Theory and Practice, Third Edition
- 用MATLAB求一阶微分方程(组)数值解
- h3c服务器登录密码修改,H3C交换机配置ssh密码验证登录方式
- python opengl书籍_初试PyOpenGL一 (Python+OpenGL)
- 树形动态规划之树的最大独立集
- OpenAI的API key获取方法
- 解决思科 Cisco Packet Tracer 7.3登录问题
- 羊毛地毯可以用水洗吗
- 知识兔课程揭秘跨境电商七大骗局!
- 并行:并行编程的基础概述
- 公链蓬勃发展——多链世界从理想走向现实 | 2021 区块链年报|Footprint Analytics