【BZOJ 3534】 3534: [Sdoi2014]重建 (Matrix-Tree Theorem)
3534: [Sdoi2014]重建
Time Limit: 10 Sec Memory Limit: 512 MBSec Special Judge
Submit: 709 Solved: 323Description
T国有N个城市,用若干双向道路连接。一对城市之间至多存在一条道路。
在一次洪水之后,一些道路受损无法通行。虽然已经有人开始调查道路的损毁情况,但直到现在几乎没有消息传回。
辛运的是,此前T国政府调查过每条道路的强度,现在他们希望只利用这些信息估计灾情。具体地,给定每条道路在洪水后仍能通行的概率,请计算仍能通行的道路恰有N-1条,且能联通所有城市的概率。Input
输入的第一行包含整数N。
接下来N行,每行N个实数,第i+l行,列的数G[i][j]表示城市i与j之
间仍有道路联通的概率。
输入保证G[i][j]=G[j][i],且G[i][j]=0;G[i][j]至多包含两位小数。Output
输出一个任意位数的实数表示答案。
你的答案与标准答案相对误差不超过10^(-4)即视为正确。Sample Input
3
0 0.5 0.5
0.5 0 0.5
0.5 0.5 0Sample Output
0.375HINT
1 < N < =50
数据保证答案非零时,答案不小于10^-4
Source
【分析】
于是这个故事告诉我们矩阵数里面是可以放概率的。
真厉害。
非常地有道理。
然后最后输出小数点后4位会WA???【开到8才AC,WTF!
还有一个不懂的就是为什么要每次求abs??
#include<cstdio>
#include<cstdlib>
#include<cstring>
#include<iostream>
#include<cmath>
#include<algorithm>
using namespace std;
const double eps=1e-; double a[][]; double gauss(int n)
{
double ans=;
for(int i=;i<=n;i++)
{
int t=i;
for(int j=i+;j<=n;j++) if(fabs(a[j][i])>fabs(a[t][i])) t=j;
if(t!=i)
{
// ans=-ans;
for(int j=;j<=n;j++) swap(a[i][j],a[t][j]);
}
if(fabs(a[t][i])<eps) return ;
for(int j=i+;j<=n;j++)
{
double nw=a[j][i]/a[i][i];
for(int k=i+;k<=n;k++) a[j][k]-=a[i][k]*nw;
}
}
for(int i=;i<=n;i++) ans=ans*a[i][i];
return fabs(ans);
} int main()
{
int n;
scanf("%d",&n);
for(int i=;i<=n;i++)
for(int j=;j<=n;j++) scanf("%lf",&a[i][j]);
double ans=;
for(int i=;i<=n;i++)
for(int j=;j<=n;j++)
{
double nw=fabs(-a[i][j])<eps?eps:fabs(-a[i][j]);
if(i<j) ans=ans*nw;
a[i][j]=a[i][j]/nw;
}
for(int i=;i<=n;i++)
for(int j=;j<=n;j++) if(i!=j) a[i][i]-=a[i][j];
ans=ans*gauss(n-);
printf("%.8lf\n",ans);
return ;
}
2017-04-16 21:02:00
【BZOJ 3534】 3534: [Sdoi2014]重建 (Matrix-Tree Theorem)的更多相关文章
- BZOJ 3534: [Sdoi2014]重建(Matrix Tree)
传送门 解题思路 比较容易看的出来矩阵树定理.然后就怒送一Wa,这个矩阵树定理是不能直接用的.题目要求的其实是这个玩意. \[ ans=\sum\limits_{Tree}( \prod\limits ...
- bzoj 1016 [JSOI2008]最小生成树计数——matrix tree(相同权值的边为阶段缩点)(码力)
题目:https://www.lydsy.com/JudgeOnline/problem.php?id=1016 就是缩点,每次相同权值的边构成的联通块求一下matrix tree.注意gauss里的 ...
- 【BZOJ 3534】: [Sdoi2014]重建
题目大意:(略) 题解: 相对误差……我好方. 考虑答案应该为所有合法答案概率之和.对于一个合法的生成树,其出现概率应为所有选取边的概率出现的积 乘以 所有未选取边不出现概率的积. 即: $\;\pr ...
- BZOJ.1016.[JSOI2008]最小生成树计数(Matrix Tree定理 Kruskal)
题目链接 最小生成树有两个性质: 1.在不同的MST中某种权值的边出现的次数是一定的. 2.在不同的MST中,连接完某种权值的边后,形成的连通块的状态是一样的. \(Solution1\) 由这两个性 ...
- BZOJ.4031.[HEOI2015]小Z的房间(Matrix Tree定理 辗转相除)
题目链接 辗转相除解行列式的具体实现? 行列式的基本性质. //864kb 64ms //裸的Matrix Tree定理.练习一下用辗转相除解行列式.(因为模数不是质数,所以不能直接乘逆元来高斯消元. ...
- @总结 - 7@ 生成树计数 —— matrix - tree 定理(矩阵树定理)与 prüfer 序列
目录 @0 - 参考资料@ @0.5 - 你所需要了解的线性代数知识@ @1 - 矩阵树定理主体@ @证明 part - 1@ @证明 part - 2@ @证明 part - 3@ @证明 part ...
- 一篇自己都看不懂的Matrix tree总结
Matrix tree定理用于连通图生成树计数,由于博主太菜看不懂定理证明,所以本篇博客不提供\(Matrix\ tree\)定理的证明内容(反正这个东西背结论就可以了是吧) 理解\(Matrix\ ...
- SPOJ.104.Highways([模板]Matrix Tree定理 生成树计数)
题目链接 \(Description\) 一个国家有1~n座城市,其中一些城市之间可以修建高速公路(无自环和重边). 求有多少种方案,选择修建一些高速公路,组成一个交通网络,使得任意两座城市之间恰好只 ...
- P3317 [SDOI2014]重建(Matrix-tree+期望)
P3317 [SDOI2014]重建 详情看这位神犇的blog 剩下的注释在code里吧....... #include<iostream> #include<cstdio> ...
随机推荐
- Java学习遇到的问题
一. Java中泛型如何比较大小,继承Comparable类,然后实现其唯一的方法compareTo(): public class GenericClass<E extends Compara ...
- javascript中字符串的两种定义形式
1.var s = "this is a string"; var t = "this is also a string"; s.test = 20; 2.v ...
- 【POJ】3233 Matrix Power Series
[算法]二分+矩阵快速幂 [题意]给定矩阵A和整数k,MOD,求A^0+A^1+A^2+...+A^k. [题解] 定义题目要求的答案为f(n),即: $$f_n=\sum_{i=0}^{n}A^i$ ...
- Spring Boot中使用MongoDB数据库
前段时间分享了关于Spring Boot中使用Redis的文章,除了Redis之后,我们在互联网产品中还经常会用到另外一款著名的NoSQL数据库MongoDB. 下面就来简单介绍一下MongoDB,并 ...
- 【洛谷 P3168】 [CQOI2015]任务查询系统(主席树)
题目链接 被自己的sb错误调到自闭.. 主席树的进阶应用. 把\(P_i\)离散化一下,得到每个\(P_i\)的排名,然后建一棵维护\(m\)个位置的主席树,每个结点记录区间总和和正在进行的任务数. ...
- Chrome浏览器任意修改网页内容
在Chrome浏览器按F12,打开开发者工具,切换到console选项卡: 在下面的输入行输入下面的命令回车: document.body.contentEditable="true&quo ...
- Go语言 6 结构体、方法和接口
文章由作者马志国在博客园的原创,若转载请于明显处标记出处:http://www.cnblogs.com/mazg/ Go学习群:415660935 结构体(struct)是由一系列具有相同类型或不同类 ...
- c++动态规划dp算法题
问题1:找硬币,换钱的方法 输入: penny数组代表所有货币的面值,正数不重复 aim小于等于1000,代表要找的钱 输出:换钱的方法总数 解法1:经典dp,空间复杂度O(n*aim) class ...
- group by的运用
select a.* from zeai_photo a inner join (select max(id) mid,userid from zeai_photo group by userid) ...
- sendEmail实现邮件报警
安装 wget http://caspian.dotconf.net/menu/Software/SendEmail/sendEmail-v1.56.tar.gz 或者点击下载 tar -xf sen ...