武大校赛 26. Lost in WHU(矩阵快速幂)
来源:互联网 发布:双十一网络销售情况 编辑:程序博客网 时间:2024/05/17 22:20
题意:
给出n个点,m条边,问t步内从1到达n的方案数。
解题思路:
这题的做法在离散课本上有介绍, 邻接矩阵A的l次的第i行第j列数表示i到j的长度为l的路的条数,应该是一道经典题了吧。
知道这个就好做了,不过还要做一点做处理,因为这题求的是t步内的方案数。
求t步呢的方案数,那么在t步之前就到达n点的方案应该让点不再变化,所以我们需要可以把所有从n出去的边删去,再连上一条n到n的边,这样形成一个自环,一个点到达n后就不断的在走这个环,我们就能把t步之前的方案都给保留下来了。
还有一种做法就是矩阵求和,将A的1次,A的2次, A的3次...到A的t次的加和求出来,t有点大,可以构造一个求和的矩阵来求
最后A[1][n]就是答案了
另外别忘了开long long .虽然是1e9+7以内的数,但是两个数相乘还是溢出
代码:
#include <bits/stdc++.h>using namespace std;const int mod=1e9+7;struct edg{ long long a[103][103];}r;int n, m;edg rec_muli(edg a, edg b){ edg res; int i, j, k; for(i=1; i<=n; i++)for(j=1; j<=i; j++)res.a[i][j]=res.a[j][i]=0; for(i=1; i<=n; i++) { for(j=1; j<=n; j++) { for(k=1; k<=n; k++) { res.a[i][k]=(res.a[i][k]+(a.a[i][j]*b.a[j][k])%mod)%mod; } } } for(i=1; i<=n; i++)for(j=1; j<=n; j++)res.a[i][j]%=mod; return res;}long long quick_mod(edg a, int m){ edg res; res=a; while(m>0) { if(m&1)res=rec_muli(res, a); m>>=1; a=rec_muli(a,a); } /* for(int i=1; i<=n; i++) { for(int j=1; j<=n; j++)printf("%d ", res.a[i][j]); printf("\n"); } */ return res.a[1][n]%mod;}int main(){ cin>>n>>m; int x, y, i, j; for(i=1; i<=n; i++)for(j=1; j<=n; j++)r.a[i][j]=0; for(i=0; i<m; i++) { scanf("%d%d", &x, &y); r.a[x][y]=1; r.a[y][x]=1; } int t; cin>>t; for(i=0; i<n; i++)r.a[n][i]=0; r.a[n][n]=1; long long ans=quick_mod(r, t-1); printf("%lld\n", ans);}
0 0
- 武大校赛 26. Lost in WHU(矩阵快速幂)
- E. Lost in WHU。矩阵快速幂!
- [WOJ26 Lost in WHU]矩阵快速幂
- WOJ 26. Lost in WHU(矩阵快速幂变形)
- WOJ 26 Lost in WHU(矩阵快速幂+邻接矩阵乘法)
- 2017 Wuhan University Programming Contest (Online Round) E. Lost in WHU(矩阵快速幂)
- 2017 Wuhan University Programming Contest (Online Round) E. Lost in WHU(矩阵快速幂)
- 【矩阵快速幂】经典题 hdu2157 how many ways、woj642 Lost In WHU
- 26. Lost in WHU--武汉大学网络赛
- 4.9武大校赛E题 矩阵快速幂
- 矩阵(matrix)应用大总结(一)WOJ 642 Lost In WHU + POJ 3233
- 2017 武大校赛 I: A simple math problem(矩阵快速幂)
- 2017 Wuhan University Programming Contest (Online Round) ELost in WHU(矩阵快速幂
- 17.7.3小结、【矩阵快速幂】2017武大校赛I题:A simple math problem即nyoj2333、 bzoj2326
- 武大校赛资格赛 最小矩阵覆盖
- 2017 Wuhan University Programming Contest --Lost in WHU
- 2017华中区邀请赛暨武汉大学校赛网络赛小结 + WOJ 642 Lost in WHU
- 2015武大校赛
- 【jquery】取值、赋值的基本方法整理
- Java重写与重载
- 判断datetime为空的方法
- 枚举的单例模式的使用方法
- 学习笔记:TensorFlow Wide & Deep Learning Tutorial
- 武大校赛 26. Lost in WHU(矩阵快速幂)
- TLS协议分析 (四) handshake协议概览
- poj 2309
- 图片64位加密
- 前端中的那些注释
- [http] WinInet发送或接收函数超时的bug & 解决办法
- LeetCode 9. Palindrome Number
- sql server replace替换字段内容
- MyBatis参数传入集合之foreach动态sql