bzoj4417: [Shoi2013]超级跳马
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了bzoj4417: [Shoi2013]超级跳马相关的知识,希望对你有一定的参考价值。
裸矩阵快速幂。
#include<cstdio> #define N 100 const int p=30011; int n,m; typedef int ds[N][N]; ds f,q,a; void mul(ds u,ds v){ for(int i=0;i!=n*2;++i) for(int j=0;j!=n*2;++j) a[i][j]=0; for(int i=0;i!=n*2;++i) for(int j=0;j!=n*2;++j) for(int k=0;k!=n*2;++k) a[i][j]=(a[i][j] +u[i][k]*v[k][j])%p; for(int i=0;i!=n*2;++i) for(int j=0;j!=n*2;++j) u[i][j]=a[i][j]; } int main(){ scanf("%d%d",&n,&m); if(!--m){ printf("%d\n",n==1); return 0; } for(int i=0;i!=n;++i){ q[i+n][i+n] =q[i][i]=1; f[i+n][i]=1; } for(int i=n;i!=n*2;++i){ f[i-n][i] =f[i][i]=1; if(i-1>=n) f[i-1][i]=1; if(i+1<n*2) f[i+1][i]=1; } for(;m;m>>=1){ if(m%2)mul(q,f); if(m/2)mul(f,f); } printf("%d\n",(q[n] [n-2]+q[n][n-1])%p); }
以上是关于bzoj4417: [Shoi2013]超级跳马的主要内容,如果未能解决你的问题,请参考以下文章