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]超级跳马的主要内容,如果未能解决你的问题,请参考以下文章

bzoj4417 [Shoi2013]超级跳马

BZOJ4417: [Shoi2013]超级跳马

bzoj4417[Shoi2013]超级跳马 矩阵乘法

BZOJ 4417 超级跳马

[SHOI 2013]超级跳马

[SHOI2013] 超级跳马