poj 3420 Quad Tiling
来源:互联网 发布:c语言简单编程实例 编辑:程序博客网 时间:2024/05/16 14:58
题目:poj 3420 Quad Tiling
思路:状态压缩
#include <iostream>#include <cstring>#include <algorithm>#include <cmath>#include <cstdio>using namespace std;long long n,mod;struct Matrix{ int m[17][17];}E,D;void init(){ for(int i=1;i<=16;i++) for(int j=1;j<=16;j++) { E.m[i][j]=(i==j); D.m[i][j]=0; } D.m[1][1]=1; D.m[1][4]=1; D.m[1][10]=1; D.m[1][13]=1; D.m[1][16]=1; D.m[2][3]=1; D.m[2][9]=1; D.m[2][15]=1; D.m[3][2]=1; D.m[3][14]=1; D.m[4][1]=1; D.m[4][13]=1; D.m[5][9]=1; D.m[5][12]=1; D.m[6][11]=1; D.m[7][10]=1; D.m[8][9]=1; D.m[9][2]=1; D.m[9][5]=1; D.m[9][8]=1; D.m[10][1]=1; D.m[10][7]=1; D.m[11][6]=1; D.m[12][5]=1; D.m[13][1]=1; D.m[13][4]=1; D.m[14][3]=1; D.m[15][2]=1; D.m[16][1]=1;}Matrix Multi(Matrix A,Matrix B,int M,int N,int K){ Matrix ans; for(int i=1;i<=M;i++) for(int j=1;j<=K;j++) { ans.m[i][j]=0; for(int k=1;k<=N;k++) ans.m[i][j]=(ans.m[i][j]+A.m[i][k]*B.m[k][j])%mod; } return ans;}Matrix Pow(Matrix A,long long k){ Matrix ans=E; while(k) { if(k&1) { k--; ans=Multi(ans,A,16,16,16); } else { k/=2; A=Multi(A,A,16,16,16); } } return ans;}int main(){ init(); while(scanf("%lld%lld",&n,&mod)!=EOF) { if(n+mod==0) break; Matrix tmp; tmp.m[1][1]=1; for(int i=2;i<=16;i++) tmp.m[i][1]=0; Matrix cnt=Pow(D,n); cnt=Multi(cnt,tmp,16,16,1); printf("%lld\n",cnt.m[1][1]%mod); } return 0;}
- poj 3420 Quad Tiling
- POJ 3420 Quad Tiling
- poj 3420 Quad Tiling
- POJ 3420 Quad Tiling
- Poj-3420 Quad Tiling
- POJ 3420 Quad Tiling
- POJ 3420 Quad Tiling
- POJ 3420Quad Tiling
- Quad Tiling - POJ 3420 矩阵递推
- poj 3420 Quad Tiling 状压dp
- POJ - 3420 Quad Tiling (矩阵快速幂)
- POJ 3420 Quad Tiling 已被翻译
- Quad Tiling POJ
- poj 3420 Quad Tiling(状态压缩矩阵递推)
- POJ 3420 Quad Tiling 状压DP+矩阵快速幂
- POJ 3420 Quad Tiling 线性递推 矩阵快速幂
- [POJ 3420]Quad Tiling(状压DP+矩阵乘法)
- poj 3420 Quad Tiling 状压dp+矩阵快速幂
- django-tinymce 支持富文本编辑器
- Android实现模拟时钟(简单+漂亮)--时针、分针、秒针
- JS横向日历控件
- python中List的sort方法(或者sorted内建函数)的用法
- c++的函参名和变量名不能相同
- poj 3420 Quad Tiling
- Apache HBase Region Splitting and Merging
- Failed to load class "org.slf4j.impl.StaticLoggerBinder" 问题解决
- object-c的Category
- 61G的数据库怎么备份?
- 22 款开源的 iOS 应用菜单 (Menu) 控件
- HDU4508:湫湫系列故事——减肥记I
- python的import与from...import的不同之处
- 关于MVC3 _Layout基础问题