#1162 : 骨牌覆盖问题·三

时间限制:10000ms
单点时限:1000ms
内存限制:256MB

描述

前两周里,我们讲解了2xN,3xN骨牌覆盖的问题,并且引入了两种不同的递推方法。
这一次我们再加强一次题目,对于给定的K和N,我们需要去求KxN棋盘的覆盖方案数。

提示:KxN骨牌覆盖

输入

第1行:2个整数N。表示棋盘宽度为k,长度为N。2≤K≤7,1≤N≤100,000,000

输出

第1行:1个整数,表示覆盖方案数 MOD 12357

样例输入
2 62247088
样例输出
1399
#include<iostream>
#include<cstdio>
#include<cstring>
using namespace std;
const int MOD=;
int m,n;
struct Lu { int mx[][]; }L1,L2;
void dfs(int now,int next,int col)
{
if(col==m){
L1.mx[now][next]=;//表示now状态能够转移到next状态
return;
}
dfs((now<<)+,next<<,col+);//不放
dfs(now<<,(next<<)+,col+);//竖放
if(col+<=m) dfs((now<<)+,(next<<)+,col+);//横放
}
Lu multi(Lu a,Lu b)
{
Lu c;
for(int i=;i<(<<m);i++){
for(int j=;j<(<<m);j++){
c.mx[i][j]=;
for(int k=;k<(<<m);k++)
c.mx[i][j]=(c.mx[i][j]+a.mx[i][k]*b.mx[k][j])%MOD;
}
}
return c;
}
int solve(int x)
{
memcpy(L2.mx,L1.mx,sizeof(L1.mx));
while(x){
if(x&) L1=multi(L1,L2);
L2=multi(L2,L2);
x>>=;
}
return L1.mx[(<<m)-][(<<m)-];//最后放满,转移到末状态
}
int main()
{
while(scanf("%d%d",&m,&n)==){
memset(L1.mx,,sizeof(L1.mx));
dfs(,,);
int ans=solve(n-);
printf("%d\n",ans);
}
return ;
}

hihocoder #1162 矩阵加速dp的更多相关文章

  1. 洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速$dp\&Floyd$)

    洛谷P3502 [POI2010]CHO-Hamsters感想及题解(图论+字符串+矩阵加速\(dp\&Floyd\)) 标签:题解 阅读体验:https://zybuluo.com/Junl ...

  2. [BZOJ 4818/LuoguP3702][SDOI2017] 序列计数 (矩阵加速DP)

    题面: 传送门:https://www.lydsy.com/JudgeOnline/problem.php?id=4818 Solution 看到这道题,我们不妨先考虑一下20分怎么搞 想到暴力,本蒟 ...

  3. Codeforces 691E Xor-sequences(矩阵加速DP)

    题目链接 Xor-sequences 利用矩阵加速. 先预处理出当序列长度为$2$的时候的方案数. 也就是说这个序列起点是$a[i]$终点是$a[j]$且中间没有任何元素. 但是所求的$k$很大,序列 ...

  4. Codeforces 576D Flights for Regular Customers(矩阵加速DP)

    题目链接  Flights for Regular Customers 首先按照$d$的大小升序排序 然后分成$m$个时刻,每条路径一次处理过来. $can[i][j]$表示当前时刻$i$能否走到$j ...

  5. _bzoj1009 [HNOI2008]GT考试【矩阵加速dp】

    传送门:http://www.lydsy.com/JudgeOnline/problem.php?id=1009 比较不错的一道题,令f(i, j)表示考号匹配到i位,后j位为不吉利串的前j位,那么对 ...

  6. [ZJOI2011]细胞——斐波那契数列+矩阵加速+dp

    Description bzoj2323 Solution 题目看起来非常复杂. 本质不同的细胞这个条件显然太啰嗦, 是否有些可以挖掘的性质? 1.发现,只要第一次分裂不同,那么互相之间一定是不同的( ...

  7. HDU 5564 Clarke and digits 状压dp+矩阵加速

    题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=5564 题意: 求长度在[L,R]范围,并且能整除7的整数的总数. 题解: 考虑最原始的想法: dp[ ...

  8. Codeforces Round #341 (Div. 2) E. Wet Shark and Blocks dp+矩阵加速

    题目链接: http://codeforces.com/problemset/problem/621/E E. Wet Shark and Blocks time limit per test2 se ...

  9. 2019.2.26考试T2 矩阵快速幂加速DP

    \(\color{#0066ff}{题解 }\) 可以发现, 数据范围中的n特别小,容易想到状压 可以想到类似于状压DP的思路,按列进行转移 那么应该有3维,\(f[i][j][k]\)代表到第i列, ...

随机推荐

  1. shell--read命令

    read命令 -p(提示语句) -n(字符个数) -t(等待时间) -s(不回显) 1.基本读取read命令接收标准输入(键盘)的输入,或其他文件描述符的输入(后面在说).得到输入后,read命令将数 ...

  2. iOS - Bundle 资源文件包生成和常见资源文件使用

    1.Bundle 文件 Bundle 文件,就是资源文件包.我们将许多图片.XIB.文本文件组织在一起,打包成一个 Bundle 文件.方便在其他项目中引用包内的资源. Bundle 文件是静态的,也 ...

  3. CSS命名规范(规则)常用的CSS命名规则

    CSS命名规范(规则)常用的CSS命名规则   CSS命名规范(规则)常用的CSS命名规则   头:header   内容:content/container   尾:footer ...

  4. 作业 20181127-3 互评Beta版本

    此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2448 组名:可以低头,但没必要 组长:付佳 组员:张俊余 李文涛 孙赛佳 ...

  5. 对视频播放软件KMplayer的评价

    刚进入大一的时候接触到了KMplayer,由于当时收集了不同格式的电影视频却没有合适的播放器播放出来,后来在网上知道了所谓的万能播放器的KMplayer,下载用了过后,才知道这的确是一款万能播放器. ...

  6. Team++_炸弹人软件需求说明书

    目标是什么,目标不包括什么? 目标是制造一款受青年人(大学生或中学生)喜爱的手机益智闯关游戏,可以用来打发时间或放松心情. 用户和典型场景是什么? 用户:学生 典型场景:在宿舍无聊时.在睡觉之前或在课 ...

  7. 生命周期事件和 Global.asax 文件

    文章:IIS 5.0 和 6.0 的 ASP.NET 应用程序生命周期概述 该文章有介绍Application_Start方法

  8. PMS---团队展示

    点我查看作业原题 [队名] PMS(一群pm) [拟做的团队项目描述] 基于监控场景的视频摘要与人车检测跟踪系统 A system, under monitor scene, for video su ...

  9. angularJS1笔记-(4)-自定义服务

    html: <!DOCTYPE html> <html lang="en"> <head> <meta charset="UTF ...

  10. Delphi判断字符串中是否包含汉字,并返回汉字位置

    //1,函数代码{判断字符串是否包含汉字// judgeStr:要判断的字符串//posInt:第一个汉字位置}function TForm2.IsHaveChinese(judgeStr: stri ...