骨牌覆盖(矩阵快速幂)
来源:互联网 发布:linux python环境变量 编辑:程序博客网 时间:2024/06/05 05:10
题目链接
hiho提示;里面说的很清楚了,看不懂的话就去做一做骨牌覆盖的前两道题,理解起来好理解一些;
#include<cstdio>#include<cstring>#include<iostream>#include<algorithm>#define LL long longusing namespace std;const int mod=12357;int N;int n,k;struct zp{ int arr[1<<7][1<<7];}M;zp jx(zp a,zp b){ zp res; for(int i=0;i<N;i++) for(int j=0;j<N;j++) res.arr[i][j]=0; for(int i=0;i<N;i++) for(int j=0;j<N;j++) for(int k=0;k<N;k++) res.arr[i][j]=(res.arr[i][j]+a.arr[i][k]*b.arr[k][j])%mod; return res;}zp jk(zp a,int b){ zp res; for(int i=0;i<N;i++) for(int j=0;j<N;j++) res.arr[i][j]=(i==j); while(b) { if(b&1) res=jx(res,a); a=jx(a,a); b>>=1; } return res;}void dfs(int x,int y,int l)//得到转移的矩阵{ if(l==k) { M.arr[x][y]++; return ; } dfs((x<<1)+1,y<<1,l+1);//x不放 dfs(x<<1,(y<<1)+1,l+1);//x竖着放 if(l+2<=k) dfs((x<<2)+3,(y<<2)+3,l+2);//x横着放}int main(){ while(~scanf("%d%d",&k,&n)) { if((n&1)&&(k&1))//奇数不可能有解 { printf("0\n"); continue; } N=1<<k; memset(M.arr,0,sizeof(M.arr)); dfs(0,0,0); zp res=jk(M,n); printf("%d\n",res.arr[N-1][N-1]%mod); }}
0 0
- 骨牌覆盖(矩阵快速幂)
- 算法-骨牌覆盖问题(矩阵快速幂求Fibonacii)
- hihocoder1143 骨牌覆盖问题·一(矩阵快速幂)
- 51nod 1033 骨牌覆盖 V2(矩阵快速幂)
- hihoCoder 1143 : 骨牌覆盖问题·一 矩阵快速幂
- hihoCoder 1151 : 骨牌覆盖问题·二 矩阵快速幂
- 快速矩阵幂 hihoCoder1162 骨牌覆盖问题·三
- ZCMU-1618-骨牌覆盖(矩阵乘法+快速幂)
- hihocoder 1162 : 骨牌覆盖问题·三 矩阵快速幂
- 2015编程之美 骨牌覆盖问题·一(矩阵快速幂)
- hihocoder 1151 : 骨牌覆盖问题·二(找规律+矩阵快速幂)
- 骨牌问题(DP+矩阵快速幂)
- 点头OJ 1033 . 骨牌覆盖 V2 ( 状态压缩 + 矩阵快速幂 )
- hiho_41周_骨牌覆盖一_找规律+矩阵快速幂
- hiho一下·41 骨牌覆盖问题·一(矩阵快速幂·费波拉契)
- 题目1 : 骨牌覆盖问题·一 (线性递推+矩阵快速幂)
- hihoCoder 1143 : 骨牌覆盖问题·一(递推,矩阵快速幂)
- HihoCoder1143 骨牌覆盖问题·一(矩阵快速幂,斐波那契)
- 图像显示
- ACM刷题之codeforces————Cinema
- 腾讯课堂IMWeb小白-第二天
- NS3和SUMO联合仿真浅析
- Exynos4412 uboot2013.1 移植A
- 骨牌覆盖(矩阵快速幂)
- 集合相等问题
- tomcat 工作原理(转)
- 如何消除子盒子的margin-top对父级盒子的影响
- linux自动化启动集群zookeeper
- 随时随地退出程序
- ACM刷题之codeforces————Simple Robot
- 递归入门的两段代码
- caffe使用技巧