矩阵——bzoj1297: [SCOI2009]迷路
2017-05-03 16:13
316 查看
http://www.lydsy.com/JudgeOnline/problem.php?id=1297
题解
http://blog.csdn.net/clove_unique/article/details/51492780
我看这图想了半天,然后1A;
感谢zyfzyf2000
题解
http://blog.csdn.net/clove_unique/article/details/51492780
我看这图想了半天,然后1A;
感谢zyfzyf2000
#include<iostream> #include<cstdio> #include<cstdlib> #include<cstring> using namespace std; struct jv{ int n,m; int a[99][99]; jv(){memset(a,0,sizeof a);n=m=1;} }a; int n,m,x,y,mo=2009; char c; jv cheng(jv a,jv b){ jv c; c.n=a.n; c.m=b.m; for(int i=1;i<=c.n;i++) for(int k=1;k<=a.m;k++)if(a.a[i][k]) for(int j=1;j<=c.m;j++) c.a[i][j]=(c.a[i][j]+a.a[i][k]*b.a[k][j])%mo; return c; } jv ksm(int k){ jv ans=a,c=a; for(k--;k;k>>=1,c=cheng(c,c)) if(k&1)ans=cheng(ans,c); return ans; } int main() { scanf("%d%d",&n,&m); a.n=a.m=n*9; for(int i=1;i<=n;i++) for(int j=1;j<=8;j++) a.a[n*(j-1)+i][n*j+i]=1; for(int i=1;i<=n;i++) for(int j=1;j<=n;j++){ cin>>c; if(c=='0')continue; a.a[n*(c-48-1)+i][j]=1; } printf("%d",ksm(m).a[1] ); }
相关文章推荐
- BZOJ1297: [SCOI2009]迷路 矩阵乘法
- bzoj1297: [SCOI2009]迷路 矩阵乘法
- BZOJ1297 [SCOI2009]迷路 【矩阵优化dp】
- bzoj1297: [SCOI2009]迷路
- bzoj1297: [SCOI2009]迷路(矩阵乘法+拆点)
- 【矩阵快速幂】bzoj1297 [SCOI2009]迷路
- Bzoj1297:[SCOI2009]迷路:矩阵快速幂
- BZOJ 1297 SCOI2009 迷路 矩阵乘法
- BZOJ1297: [SCOI2009]迷路
- 【矩阵乘法】【SCOI2009】迷路
- 【bzoj1297】【SCOI2009】【迷路】【矩阵乘法】
- bzoj 1297: [SCOI2009]迷路(矩阵优化DP)
- [BZOJ 1297][SCOI 2009]迷路(矩阵快速幂)
- BZOJ 1297: [SCOI2009]迷路 [矩阵快速幂]
- bzoj1297 [SCOI2009]迷路
- BZOJ 1297 1297: [SCOI2009]迷路 拆点,矩阵快速幂
- [Bzoj1297][Scoi2009 ]迷路 (矩阵乘法 + 拆点)
- BZOJ 1297 [SCOI2009]迷路 递推 矩阵乘法
- bzoj1297 [SCOI2009]迷路(矩阵优化)
- bzoj1297: [SCOI2009]迷路