POJ 3420 Quad Tiling (矩阵乘法)
【题目链接】 http://poj.org/problem?id=3420
【题目大意】
给出一个4*n的矩阵,求用1*2的骨牌填满有多少方案数
【题解】
弄出不同情况的继承关系,用矩阵递推即可。
【代码】
#include <cstdio>
#include <vector>
#define rep(i,n) for(int i=0;i<n;i++)
using namespace std;
typedef vector<vector<int> > mat;
typedef long long LL;
int n,mod;
mat mul(mat &A,mat &B){
mat C(A.size(),vector<int>(B[0].size()));
rep(i,A.size())rep(j,B[0].size())rep(k,B.size())C[i][j]=(C[i][j]+A[i][k]*B[k][j])%mod;
return C;
}
mat pow(mat A,LL n){
mat B(A.size(),vector<int>(A.size()));
rep(i,A.size())B[i][i]=1;
for(;n;n>>=1){if(n&1)B=mul(B,A);A=mul(A,A);}
return B;
}
int main(){
while(scanf("%d%d",&n,&mod),n+mod){
mat b(6,vector<int>(6));
b[0][0]=1; b[0][1]=1; b[0][2]=1; b[0][3]=1; b[0][4]=1; b[0][5]=0;
b[1][0]=1; b[1][1]=0; b[1][2]=1; b[1][3]=0; b[1][4]=0; b[1][5]=0;
b[2][0]=1; b[2][1]=1; b[2][2]=0; b[2][3]=0; b[2][4]=0; b[2][5]=0;
b[3][0]=1; b[3][1]=0; b[3][2]=0; b[3][3]=0; b[3][4]=0; b[3][5]=1;
b[4][0]=1; b[4][1]=0; b[4][2]=0; b[4][3]=0; b[4][4]=0; b[4][5]=0;
b[5][0]=0; b[5][1]=0; b[5][2]=0; b[5][3]=1; b[5][4]=0; b[5][5]=0;
printf("%d\n",pow(b,n)[0][0]);
}return 0;
}
POJ 3420 Quad Tiling (矩阵乘法)的更多相关文章
- [POJ 3420] Quad Tiling
Quad Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 3495 Accepted: 1539 Des ...
- poj 3420 Quad Tiling (状压dp+多米诺骨牌问题+矩阵快速幂)
还有这种操作?????? 直接用pre到now转移的方式构造一个矩阵就好了. 二进制长度为m,就构造一个长度为1 << m的矩阵 最后输出ans[(1 << m) - 1][( ...
- POJ 2778 (AC自动机+矩阵乘法)
POJ 2778 DNA Sequence Problem : 给m个只含有(A,G,C,T)的模式串(m <= 10, len <=10), 询问所有长度为n的只含有(A,G,C,T)的 ...
- POJ 3318 Matrix Multiplication(矩阵乘法)
题目链接 题意 : 给你三个n维矩阵,让你判断A*B是否等于C. 思路 :优化将二维转化成一维的.随机生成一个一维向量d,使得A*(B*d)=C*d,多次生成多次测试即可使错误概率大大减小. #inc ...
- POJ 2663 Tri Tiling 矩阵快速幂 难度:3
Tri Tiling Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 7841 Accepted: 4113 Descri ...
- DNA Sequence POJ - 2778 AC 自动机 矩阵乘法
定义重载运算的时候一定要将矩阵初始化,因为这个调了一上午...... Code: #include<cstdio> #include<algorithm> #include&l ...
- Poj 3233 Matrix Power Series(矩阵乘法)
Matrix Power Series Time Limit: 3000MS Memory Limit: 131072K Description Given a n × n matrix A and ...
- POJ 2778 DNA Sequence (AC自动机,矩阵乘法)
题意:给定n个不能出现的模式串,给定一个长度m,要求长度为m的合法串有多少种. 思路:用AC自动机,利用AC自动机上的节点做矩阵乘法. #include<iostream> #includ ...
- POJ 2888 Magic Bracelet [Polya 矩阵乘法]
传送门 题意:竟然扯到哈利波特了.... 和上一题差不多,但颜色数很少,给出不能相邻的颜色对 可以相邻的连边建图矩阵乘法求回路个数就得到$f(i)$了.... 感觉这样的环上有限制问题挺套路的...旋 ...
随机推荐
- python之urllib.request.urlopen(url)报错urllib.error.HTTPError: HTTP Error 403: Forbidden处理及引申浏览器User Agent处理
最近在跟着院内大神学习python的过程中,发现使用urllib.request.urlopen(url)请求服务器是报错: 在园子里找原因,发现原因为: 只会收到一个单纯的对于该页面访问的请求,但是 ...
- springboot注解使用,分页sql
https://blog.csdn.net/KingBoyWorld/article/details/78948304
- 孤荷凌寒自学python第六十天在windows10上搭建本地Mongodb数据服务
孤荷凌寒自学python第六十天在windows10上找搭建本地Mongodb数据服务 (完整学习过程屏幕记录视频地址在文末) 今天是学习mongoDB数据库的第六天.成功在本地搭建了windows ...
- Pacemaker、corosync
pacemaker详细介绍: http://blog.51cto.com/freeloda/1274533 corosync详细介绍: http://blog.51cto.com/freeloda/1 ...
- Android开发实例总结
写一个修改密码的界面 1画界面总结: 需要弄清楚什么地方用相对布局,什么地方使用线性布局 希望这过后自己花时间去弄清楚他们内嵌的的所有组件以及组件的属性包括用法. 2逻辑总结: 逻辑描述总是那么几步的 ...
- php中变量的详细介绍
变量的含义: 用于存储信息的容器,在程序运行期间,可以变化的量 变量的命名规则: 1.变量以$符开始 2.变量名只能以字母或下划线开始 3.变量名只能是字母,下划线,数字,不能有特殊字符:逗号,句号, ...
- NetScaler的cookieinsert和sourceip联合保持机制
NetScaler的cookieinsert和sourceip联合保持机制 使用NetScaler的cookieinsert和sourceip联合进行session保持机制即主用cookieinser ...
- 淀粉质模板 Tree
Tree 题目描述 给你一棵TREE,以及这棵树上边的距离.问有多少对点它们两者间的距离小于等于K 输入输出格式 输入格式: N(n<=40000) 接下来n-1行边描述管道,按照题目中写的输入 ...
- ci动态设置config配置
$this->config->set_item('cookie', 'item_value');echo $this->config->item('cookie');
- 飞思卡尔MC9S12系列单片机地址影射以及分页问题
对于用MCU的人来说,不一定要明白HCS12(x) memory map的机制和联系.因为如果没有系统地学习操作系统和编译原理之类的课程,确实有些难度.并且,对于DG128 XS128这样的MCU,默 ...