hihoCoder #1143 : 骨牌覆盖问题·一
#1143 : 骨牌覆盖问题·一
描述
骨牌,一种古老的玩具。今天我们要研究的是骨牌的覆盖问题:
我们有一个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 : 骨牌覆盖问题·一相关推荐
- hihoCoder #1162 : 骨牌覆盖问题·三 (矩阵快速幂,DP)
题意:有一个k*n的棋盘,要求用1*2的骨牌来铺满,有多少种方案?(k<8,n<100000001) 思路: 由于k是比较小,但是又不那么小,可以专门构造这样的一个矩阵M,使得只要我们有一 ...
- 骨牌覆盖问题总结!hihoCoder/ NYOJ-1273宣传墙1151
本想着做一下第九届河南省省赛题,结果被这个类似骨牌覆盖的题卡住了,队友然我去hihoCoder上老老实实把骨牌覆盖一.二.三做完,这题就没什么问题了.虽然很不情愿,但还是去见识了一下. 骨牌覆盖问题 ...
- 编程之美 --1 : 骨牌覆盖问题·一
题目1 : 骨牌覆盖问题·一 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 骨牌,一种古老的玩具.今天我们要研究的是骨牌的覆盖问题: 我们有一个2xN的长条形棋盘,然后 ...
- 随便玩玩系列之一:SPOJ-RNG+51nod 算法马拉松17F+51nod 1034 骨牌覆盖v3
先说说前面的SPOJ-RNG吧,题意就是给n个数,x1,x2,...,xn 每次可以生成[-x1,x1]范围的浮点数,把n次这种操作生成的数之和加起来,为s,求s在[A,B]内的概率 连续形的概率 假 ...
- 骨牌覆盖问题 KxM
前面我们说了一些简单的骨牌覆盖问题,有了上面的经验,我们可以尝试解决K*M的 思路和上一篇文章所提到的3*N的 很类似: 依然是矩阵快速幂.我们需要把一个小的边固定下来作为的已知边,然后进行矩阵快速幂 ...
- 51Nod-1031 骨牌覆盖【递推】
1031 骨牌覆盖 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 在2*N的一个长方形方格中,用一个1*2的骨牌排满方格. 问有多少种不同的排列方法. 例如:2 ...
- 【分治】P1228 地毯填补问题(多联骨牌覆盖棋盘问题)(递归,分治)难度⭐⭐⭐
P1228 地毯填补问题 离散上讲了这个问题,如下图 初看这个问题,似乎无从下手,于是我们可以先考虑最简单的情况,既n = 2时 0 0 0 1 这时,无论公主在哪个格子,我们都可以用一块毯子填满 继 ...
- 骨牌覆盖(51Nod-1031)
题目 在2*N的一个长方形方格中,用一个1*2的骨牌排满方格. 问有多少种不同的排列方法. 例如:2 * 3的方格,共有3种不同的排法.(由于方案的数量巨大,只输出 Mod 10^9 + 7 的结果) ...
- android power 按键,Android Framework层Power键关机流程(一,Power长按键操作处理)
一:Android处理Power按键长按操作 在Framework层中,Android4.x对Power键(KeyEvent.KEYCODE_POWER)的操作,我们从PhoneWindowManag ...
最新文章
- MYSQL 数据库迁移 ***
- 修身论文2000字_那些没能写出毕业论文的博士生,究竟是败在了哪里?
- [置顶] 自己动手实现OpenGL-OpenGL原来如此简单(二)
- 网页设计简约_简约设计指南
- oracle 查询数据库io,理解Oracle中的并行查询IO
- iis7php怎么301重定向,iis7/8设置网站301重定向的方法
- JVM006_类加载的过程
- Flutter BottomNavigationBar 三分钟实现一个常用APP首页底部导航菜单栏
- 课后作业1:字串加密
- 设计模式 ( 四 ) 抽象工厂模式
- java 插件开发教程_Eclipse插件开发的详细教程
- mysql时间转换格式
- 吃瓜 || 一文看懂BCH分叉事件始末
- 【转】人家在美国怎么过的,7年,我无比惭愧
- 阿里面试必过的 Java 面试参考指南全集
- RNA-seq 详细教程:假设检验和多重检验(8)
- 关于Json解析(org.json.JSONObject)
- 【SpringBoot学习】39、SpringBoot 集成 wxJava 微信小程序:订单支付
- 微信小程序设置启动页面
- 100个让舌头抽筋的绕口令!!!
热门文章
- famous javascript library.
- 博客园“图灵杯”第3届博问大赛比赛结果
- 如何保证MongoDB的安全性? 1
- 将网桥的配置写进去/etc/sysconfig/network-scripts/ifcfg-xxx
- 剖析管理所有大数据组件的可视化利器:Hue
- 【干货分享】流程DEMO-事务呈批表
- Jconsole查看Weblogic自定义MBean
- HttpHandler:给指定路径下的图片添加水印显示
- layui 渲染select下拉选项 ,日期控件的用法
- openfire服务器