#1143 : 骨牌覆盖问题·一

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

描述

骨牌,一种古老的玩具。今天我们要研究的是骨牌的覆盖问题:
我们有一个2xN的长条形棋盘,然后用1x2的骨牌去覆盖整个棋盘。对于这个棋盘,一共有多少种不同的覆盖方法呢?
举个例子,对于长度为1到3的棋盘,我们有下面几种覆盖方式:

提示:骨牌覆盖

提示:如何快速计算结果

输入

第1行:1个整数N。表示棋盘长度。1≤N≤100,000,000

输出

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

样例输入
62247088
样例输出
17748018

如果最左边竖着放,那么方法数等于f(n-1)如果最左边横着放,放么方法数等于f(n-2)所以f(n)=f(n-1)+f(n-2)矩阵快速幂
#include<cstdio>
#include<cstring>
#define mod 19999997
using namespace std;
long long a[3][3],ans[3][3],tmp[3][3];
long long n;
void mul(long long s1[3][3],long long s2[3][3])
{memset(tmp,0,sizeof(tmp));for(int i=1;i<=2;i++)for(int j=1;j<=2;j++)for(int k=1;k<=2;k++)tmp[i][j]=(tmp[i][j]+s1[i][k]*s2[k][j])%mod;for(int i=1;i<=2;i++)for(int j=1;j<=2;j++)s1[i][j]=tmp[i][j];
}
void solve()
{for(;n;n>>=1,mul(a,a))if(n&1) mul(ans,a);printf("%lld\n",ans[1][1]);
}
int main()
{scanf("%lld",&n);if(n==0) {printf("0\n");return 0;}a[1][1]=1;a[1][2]=1;a[2][1]=1;a[2][2]=0;ans[1][1]=1; ans[2][1]=1;solve();
}

转载于:https://www.cnblogs.com/TheRoadToTheGold/p/6628863.html

hihoCoder #1143 : 骨牌覆盖问题·一相关推荐

  1. hihoCoder #1162 : 骨牌覆盖问题·三 (矩阵快速幂,DP)

    题意:有一个k*n的棋盘,要求用1*2的骨牌来铺满,有多少种方案?(k<8,n<100000001) 思路: 由于k是比较小,但是又不那么小,可以专门构造这样的一个矩阵M,使得只要我们有一 ...

  2. 骨牌覆盖问题总结!hihoCoder/ NYOJ-1273宣传墙1151

    本想着做一下第九届河南省省赛题,结果被这个类似骨牌覆盖的题卡住了,队友然我去hihoCoder上老老实实把骨牌覆盖一.二.三做完,这题就没什么问题了.虽然很不情愿,但还是去见识了一下.  骨牌覆盖问题 ...

  3. 编程之美 --1 : 骨牌覆盖问题·一

    题目1 : 骨牌覆盖问题·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题: 我们有一个2xN的长条形棋盘,然后 ...

  4. 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3

    先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假 ...

  5. 骨牌覆盖问题 KxM

    前面我们说了一些简单的骨牌覆盖问题,有了上面的经验,我们可以尝试解决K*M的 思路和上一篇文章所提到的3*N的 很类似: 依然是矩阵快速幂.我们需要把一个小的边固定下来作为的已知边,然后进行矩阵快速幂 ...

  6. 51Nod-1031 骨牌覆盖【递推】

    1031 骨牌覆盖 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 在2*N的一个长方形方格中,用一个1*2的骨牌排满方格. 问有多少种不同的排列方法. 例如:2 ...

  7. 【分治】P1228 地毯填补问题(多联骨牌覆盖棋盘问题)(递归,分治)难度⭐⭐⭐

    P1228 地毯填补问题 离散上讲了这个问题,如下图 初看这个问题,似乎无从下手,于是我们可以先考虑最简单的情况,既n = 2时 0 0 0 1 这时,无论公主在哪个格子,我们都可以用一块毯子填满 继 ...

  8. 骨牌覆盖(51Nod-1031)

    题目 在2*N的一个长方形方格中,用一个1*2的骨牌排满方格. 问有多少种不同的排列方法. 例如:2 * 3的方格,共有3种不同的排法.(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果) ...

  9. android power 按键,Android Framework层Power键关机流程(一,Power长按键操作处理)

    一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...

最新文章

  1. MYSQL 数据库迁移 ***
  2. 修身论文2000字_那些没能写出毕业论文的博士生,究竟是败在了哪里?
  3. [置顶] 自己动手实现OpenGL-OpenGL原来如此简单(二)
  4. 网页设计简约_简约设计指南
  5. oracle 查询数据库io,理解Oracle中的并行查询IO
  6. iis7php怎么301重定向,iis7/8设置网站301重定向的方法
  7. JVM006_类加载的过程
  8. Flutter BottomNavigationBar 三分钟实现一个常用APP首页底部导航菜单栏
  9. 课后作业1:字串加密
  10. 设计模式 ( 四 ) 抽象工厂模式
  11. java 插件开发教程_Eclipse插件开发的详细教程
  12. mysql时间转换格式
  13. 吃瓜 || 一文看懂BCH分叉事件始末
  14. 【转】人家在美国怎么过的,7年,我无比惭愧
  15. 阿里面试必过的 Java 面试参考指南全集
  16. RNA-seq 详细教程:假设检验和多重检验(8)
  17. 关于Json解析(org.json.JSONObject)
  18. 【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付
  19. 微信小程序设置启动页面
  20. 100个让舌头抽筋的绕口令!!!

热门文章

  1. famous javascript library.
  2. 博客园“图灵杯”第3届博问大赛比赛结果
  3. 如何保证MongoDB的安全性? 1
  4. 将网桥的配置写进去/etc/sysconfig/network-scripts/ifcfg-xxx
  5. 剖析管理所有大数据组件的可视化利器:Hue
  6. 【干货分享】流程DEMO-事务呈批表
  7. Jconsole查看Weblogic自定义MBean
  8. HttpHandler:给指定路径下的图片添加水印显示
  9. layui 渲染select下拉选项 ,日期控件的用法
  10. openfire服务器