码迷,mamicode.com
首页 > 其他好文 > 详细

bzoj4417: [Shoi2013]超级跳马

时间:2016-09-20 00:14:02      阅读:113      评论:0      收藏:0      [点我收藏+]

标签:

裸矩阵快速幂。

#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]超级跳马

标签:

原文地址:http://www.cnblogs.com/f321dd/p/5887073.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!