hdu 5001 矩阵 快速幂
来源:互联网 发布:计算机编程基础知识 编辑:程序博客网 时间:2024/05/16 18:58
题目大意:给n个点,m条边,每个点选择每条边都是任意的,求走K步,不经过每一个点的概率。
这里用了一个struct代表一种类型(矩阵类型),这样写比较方便,以后可以这样用!!!
一开始我题目理解错了,写错了也就算了,可是当题目理解对了之后,还是错,真的是。。。虽然我知道我的代码能力差,但是总是犯一些很傻比的错误,我真的很忧伤,所以呢,以后写题要更加小心才可以,也要完完全全想清楚才行!!!!点击打开链接
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>using namespace std;int node[60], n, m, step;bool flag[60][60];struct matrix{ double a[60][60];};matrix rela, ans, temp;matrix mut(matrix A, matrix B){ int i, j; matrix res; for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { res.a[i][j] = 0; for(int t = 1; t <= n; t++) res.a[i][j] += A.a[i][t] * B.a[t][j]; } } return res;}void solve( int step ){ int i, j; for(i = 1; i <= n; i++) for(j = 1; j <= n; j++) ans.a[i][j] = (i == j); while(step) { if(step & 1) ans = mut(ans, rela); rela = mut(rela, rela); step /= 2; }}int main(){ int T, cas, i, j; int pp, qq; scanf("%d", &T); for(cas = 1; cas <= T; cas++) { scanf("%d%d%d", &n, &m, &step); memset(node, 0, sizeof(node)); memset(flag, 0, sizeof(flag)); for(i = 1; i <= m; i++) { scanf("%d%d", &pp, &qq); node[pp]++; node[qq]++; flag[pp][qq] = flag[qq][pp] = 1; } for(i = 1; i <= n; i++) { for(j = 1; j <= n; j++) { rela.a[j][j] = 0; for(int t = 1; t <= n; t++) { if(t!=j) { if(j==i || t==i) rela.a[j][t] = 0; else if(flag[j][t]) rela.a[j][t] = 1.0/node[j]; else rela.a[j][t] = 0; } } } //一开始写得是solve(),所以导致step在第一次计算后就变了,所以后面的只不对、 solve( step ); double mm; double sum = 0; for ( int j = 1 ; j <= n ; j ++ ) { for ( int k = 1 ; k <= n; k ++) sum += ans.a[j][k] ; } printf("%.8lf\n", sum/n); } } return 0;}
0 0
- hdu 5001 矩阵 快速幂
- 【矩阵快速幂】hdu 1575
- 【矩阵快速幂】hdu 1757
- hdu 2604 矩阵快速幂
- hdu-1575矩阵快速幂
- hdu 1575 矩阵快速幂
- hdu 1575(矩阵快速幂)
- hdu 3306 矩阵快速幂
- hdu 1757 矩阵快速幂
- hdu 1575 矩阵快速幂
- hdu 2855 矩阵快速幂
- hdu 3117 矩阵快速幂
- hdu 1005 矩阵快速幂
- hdu 4965 矩阵快速幂
- hdu 2793 矩阵快速幂
- HDU 5015(矩阵快速幂)
- hdu-5015(矩阵快速幂)
- hdu 4990 矩阵快速幂
- .net 读取数据库时间内容 输出不带时分秒的格式
- 第十四章 14.2.1节练习
- 斗奶Tv 刷鱼丸脚本 原理讲解 以及 脚本解析 每天1000 不是梦。
- Maven jar包冲突解决办法
- Android学习笔记之(一)开发环境搭建
- hdu 5001 矩阵 快速幂
- poj-1338
- 软件采购必备:软件供应商评估表 之三-3(共七)
- 学习笔记:move_if_noexcept
- 聚丙烯酰胺
- Xtreme.Toolkit taskpanel 使用
- c中volatile关键字的用法
- Oracle自学笔记---在linux环境下转移数据文件
- ORA-02303无法使用类型或表的相关性来删除或取代一个类型