hihoCoder #1143 : 骨牌覆盖问题·一

#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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/469018.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

关于CPU Cache -- 程序猿需要知道的那些事

关于CPU Cache -- 程序猿需要知道的那些事 本文将介绍一些作为程序猿或者IT从业者应该知道的CPU Cache相关的知识 文章欢迎转载&#xff0c;但转载时请保留本段文字&#xff0c;并置于文章的顶部 作者&#xff1a;卢钧轶(cenalulu) 本文原文地址&#xff1a;http://cenalulu.gi…

python线性回归代码_day-12 python实现简单线性回归和多元线性回归算法

1、问题引入 在统计学中&#xff0c;线性回归是利用称为线性回归方程的最小二乘函数对一个或多个自变量和因变量之间关系进行建模的一种回归分析。这种函数是一个或多个称为回归系数的模型参数的线性组合。一个带有一个自变量的线性回归方程代表一条直线。我们需要对线性回归结…

基于Springboot外卖系统14:菜品新增模块+多个数据表操作+文件上传下载复用

2.1 需求分析 后台系统中可以管理菜品信息&#xff0c;通过新增功能来添加一个新的菜品&#xff0c;在添加菜品时需要选择当前菜品所属的菜品分类&#xff0c;并且需要上传菜品图片&#xff0c;在移动端会按照菜品分类来展示对应的菜品信息 。 2.2 数据模型 新增菜品&#xff…

python层次聚类_python实现层次聚类

BAFIMINARMTO BA0662877255412996 FI6620295468268400 MI8772950754564138 NA2554687540219869 RM4122685642190669 TO9964001388696690 这是一个距离矩阵。不管是scipy还是fastcluster&#xff0c;都有一个计算距离矩阵的步骤&#xff08;也可以不用&#xff09;。距离矩阵是冗…

解析统计文本文件中的字符数、单词数、行数。

用android 编程解析统计文本文件中的字符数、单词数、行数&#xff08;作业&#xff09; 主要代码 ... private void analysis() { String str " "; int words 0; int chars 0; int lines 0; int spaces 0; int marks 0; int character 0; String filename e…

shell自动生成的文件有一个问号的后缀

写了一个脚本&#xff0c;自动处理一个文件。 rm -f session.log rm -f link wget ftp://hostname/f:/ddn/session.log egrep ^N[[:digit:]]|^D[1-4] session.log >>link egrep -c ^N[[:digit:]]|^D[1-4] session.log >>link egrep -v ACT/UP link>>link ls …

基于Springboot外卖系统15:菜品分页查询模块+根据类别ID填充类别信息

3.1 菜品分页查询功能需求分析 系统中的菜品数据很多的时候&#xff0c;如果在一个页面中全部展示出来会显得比较乱&#xff0c;不便于查看&#xff0c;所以一般的系统中都会以分页的方式来展示列表数据。 在菜品列表展示时&#xff0c;除了菜品的基本信息(名称、售价、售卖状…

python 3d渲染_python老司机带你玩玩炫酷的3D渲染,酷毙了!

自从学会了turtle模块后&#xff0c;画了不少简笔画。像小猪佩奇、哆啦A梦等等&#xff0c;但是这些依然不能让身边人感受到python的强大&#xff0c;依然是每次装逼必被打脸。就像你用turtle画了这个 别人拿出了这个 怎么办&#xff1f;面对函数库如此丰富的python&#xff0c…

Linux内存管理(最透彻的一篇)

摘要:本章首先以应用程序开发者的角度审视Linux的进程内存管理,在此基础上逐步深入到内核中讨论系统物理内存管理和内核内存的使用方法。力求从外到内、水到渠成地引导网友分析Linux的内存管理与使用。在本章最后,我们给出一个内存映射的实例,帮助网友们理解内核内存管理与…

基于Springboot外卖系统16:菜品修改模块+菜品信息回显+ID查询口味列表+组装数据并返回

4.1 菜品修改模块需求分析 在菜品管理列表页面点击修改按钮&#xff0c;跳转到修改菜品页面&#xff0c;在修改页面回显菜品相关信息并进行修改&#xff0c;最后点击确定按钮完成修改操作。 4.2 菜品修改模块前端页面&#xff08;add.html&#xff09;和服务端的交互过程 1).…

POJ - 2385 Apple Catching (dp)

题意&#xff1a;有两棵树&#xff0c;标号为1和2&#xff0c;在Tmin内&#xff0c;每分钟都会有一个苹果从其中一棵树上落下&#xff0c;问最多移动M次的情况下&#xff08;该人可瞬间移动&#xff09;&#xff0c;最多能吃到多少苹果。假设该人一开始在标号为1的树下。 分析&…

基于Springboot外卖系统17: 新增套餐模块+餐品信息回显+多数据表存储

1.1 新增套餐需求分析 后台系统中可以管理套餐信息&#xff0c;通过新增套餐功能来添加一个新的套餐&#xff0c;在添加套餐时需要选择当前套餐所属的套餐分类和包含的菜品&#xff0c;并且需要上传套餐对应的图片&#xff0c;在移动端会按照套餐分类来展示对应的套餐。 1.2 新…

cocoscreator editbox 只允许数字_用Cocos做一个数字调节框

点击上方蓝色字关注我们~当玩家购买道具的时候&#xff0c;一个个买可能会比较麻烦&#xff0c;用数字调节框的话玩家一次性就可以买好几十个了(钱够的话)。运行效果如下&#xff1a;Cocos Creator版本&#xff1a;2.2.0后台回复"数字调节框"&#xff0c;获取该项目完…

Android Jni 例程

1.Jni的作用 Java是一种比较高级的语言,Java调用c库,调用c++库是必不可少的,所以Jni就应运而生了。 NDK:NDK是Native Development Kit的缩写,是Google提供的一套工具集,可以让你其他语言(C、C++或汇编)开发 Android的 JNI。NDK可以编译多平台的so,开发人员只需要简单…

Xshell 无法连接虚拟机中的ubuntu的问题

转自&#xff1a;http://blog.csdn.net/qq_26941173/article/details/51173320版权声明&#xff1a;本文为博主原创文章&#xff0c;未经博主允许不得转载。 昨天在VMware Player中安装了ubuntu系统&#xff0c;今天想通过xshell连接ubuntu&#xff0c;结果显示 Connecting t…

基于Springboot外卖系统18:套餐分页查询模块+删除套餐+多数据表同步

1. 套餐分页查询模块 1.1 需求分析 系统中的套餐数据很多的时候&#xff0c;如果在一个页面中全部展示出来会显得比较乱&#xff0c;不便于查看&#xff0c;所以一般的系统中都会以分页的方式来展示列表数据。 在进行套餐数据的分页查询时&#xff0c;除了传递分页参数以外&a…

jsp项目开发案例_Laravel 中使用 swoole 项目实战开发案例一 (建立 swoole 和前端通信)life...

1 开发需要环境工欲善其事&#xff0c;必先利其器。在正式开发之前我们检查好需要安装的拓展&#xff0c;不要开发中发现这些问题&#xff0c;打断思路影响我们的开发效率。安装 swoole 拓展包安装 redis 拓展包安装 laravel5.5 版本以上如果你还不会用swoole就out了程序猿的生…

Service rootservice does not have a SELinux domain defined

新增一个SELINUX启动的时候出现问题 新增如下 service rootservice /system/bin/rootserviceuser rootgroup rootdisabledoneshoton property:sys.boot_completed1start rootservice具体补丁请查看文件 链接&#xff1a;https://pan.baidu.com/s/1AlBuXfdn-xFRwDwmsX4svA 提取…

Docker系列第01部分:介绍+虚拟化+什么是Decker+组件

0 应用部署难点 1.在软件开发中&#xff0c;最麻烦的事情之一就是环境配置。在正常情况下&#xff0c;如果要保证程序能运行&#xff0c;我们需要设置好操作系统&#xff0c;以及各种库和组件的安装。2.举例来说&#xff0c;要运行一个Python程序&#xff0c;计算机必须要有 P…

1.7.08:字符替换

08:字符替换 查看提交统计提问总时间限制: 1000ms内存限制: 65536kB描述把一个字符串中特定的字符全部用给定的字符替换&#xff0c;得到一个新的字符串。 输入只有一行&#xff0c;由一个字符串和两个字符组成&#xff0c;中间用单个空格隔开。字符串是待替换的字符串&#xf…