【蓝桥杯】格子刷油漆

问题描述

X国的一段古城墙的顶端可以看成 2*N个格子组成的矩形(如下图所示),现需要把这些格子刷上保护漆。
在这里插入图片描述

你可以从任意一个格子刷起,刷完一格,可以移动到和它相邻的格子(对角相邻也算数),但不能移动到较远的格子(因为油漆未干不能踩!)
  比如:a d b c e f 就是合格的刷漆顺序。
  c e f d a b 是另一种合适的方案。
  当已知 N 时,求总的方案数。当N较大时,结果会迅速增大,请把结果对 1000000007 (十亿零七) 取模。
输入格式
  输入数据为一个正整数(不大于1000)
输出格式
  输出数据为一个正整数。
样例输入
2
样例输出
24
样例输入
3
样例输出
96
样例输入
22
样例输出
359635897

解决思路

现在我们先考虑只在边角的情况。

F(N)F(N)F(N)
为由作为边界的第N位的某一格作为起点出发,得到的方案数量。
由于上下对称
我们先研究第N位的下角,
这个位置来说只有可能的出现这三种情况

1.有一个进口,有一个出口

由A点出发,由上角返回
可以设这种情况得到的答案为
f1(N)f_1(N)f1(N)
很显然,若要上格有返回的线,其N−2N-2N2格也必须要有返回的线,由于N−2N-2N2也有上格和下格,于是
f1(N)=f1(N−1)上格+f1(N−1)下格f_1(N)=f_1(N-1)_{上格}+f_1(N-1)_{下格}f1(N)=f1(N1)+f1(N1)
由于上格和下格是完全对称的数值。所以
f1(N)=2∗f1(N−1)f_1(N)=2*f_1(N-1)f1(N)=2f1(N1)

2.只有一个出口

由A点出发
可以设这种情况得到的答案为
f2(N)f_2(N)f2(N)
很显然,答案为前一格,F(N−1)F(N-1)F(N1)的值
f2(N)=F(N−1)上格+F(N−1)下格f_2(N)=F(N-1)_{上格}+F(N-1)_{下格}f2(N)=F(N1)+F(N1)
由于上格和下格是完全对称的数值。所以
f2(N)=2∗F(N−1)f_2(N)=2*F(N-1)f2(N)=2F(N1)

3.与前一格关联

由A点出发
由A点出发

很明显,这和情况2所遇到的情形是一样的,不一样的是出现情况2的并不是第NNN位,而是第N−1N-1N1位。于是
可以设情况3
f3(N)=f2(N−1)上格+f2(N−1)下格f_3(N)=f_2(N-1)_{上格}+f_2(N-1)_{下格}f3(N)=f2(N1)+f2(N1)
由于对称
f3(N)=2∗f2(N−1)f_3(N)=2*f_2(N-1)f3(N)=2f2(N1)
最终
我们可得
F(N)=f1(N)+f2(N)+f3(N)F(N)=f_1(N)+f_2(N)+f_3(N)F(N)=f1(N)+f2(N)+f3(N)
{f1(N)=2∗f1(N−1)f2(N)=2∗F(N−1)f3(N)=2∗f2(N−1)\begin{cases}f_1(N)=2*f_1(N-1) \\ f_2(N)=2*F(N-1) \\f_3(N)=2*f_2(N-1) \end{cases}f1(N)=2f1(N1)f2(N)=2F(N1)f3(N)=2f2(N1)
现在我们来讨论一下边界问题
很显然,由于我们涉及到了N−1N-1N1的格,所以我们考察一下N=1N=1N=1的情况
可以发现
f1,f2,f3f_1,f_2,f_3f1,f2,f3对于N=1N=1N=1都是没有定义的。
我们由经验定义
F(1)=1且{f1(2)=2f2(2)=2f3(2)=2F(1)=1 且\begin{cases}f_1(2)=2 \\ f_2(2)=2 \\f_3(2)=2 \end{cases}F(1)=1f1(2)=2f2(2)=2f3(2)=2

现在我们研究一下起点不在边界的情况下,方案数的情况
我们可以得到这样的一个情况,对于下格来说
在这里插入图片描述
G(K)G(K)G(K)为在第KKK位的某一格为起点的方案数。
对应图很显然
G(K)=f2(N−K+1)⏞左边∗f1(K)⏞右边+f1(N−K+1)⏞左边∗f2(K)⏞右边G(K)=\overbrace{f_2(N-K+1)}^{左边}*\overbrace{f_1(K)}^{右边}+\overbrace{f_1(N-K+1)}^{左边}*\overbrace{f_2(K)}^{右边}G(K)=f2(NK+1)f1(K)+f1(NK+1)f2(K)
于是总体解决方案已经明了
S(N)S(N)S(N)为题目所求
于是S(N)={2∗F(N)N=14∗F(N)N=24∗F(N)+2∗∑K=2N−1G(K)N≥3S(N)=\begin{cases}2*F(N) & N=1 \\ 4*F(N) & N=2\\ 4*F(N)+2*\sum_{K=2}^{N-1}G(K) & N\ge 3\end{cases} S(N)=2F(N)4F(N)4F(N)+2K=2N1G(K)N=1N=2N3

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值