历年试题 PREV-15 格子刷油漆
题目:传送门
解析:
分析题目我们可以知道刷油漆的的起点可以分为两类,一是在第一列和最后一列的四个格子开始;而是在中间的某个格子开始。
对于从角落开始的方案比较好分析,对于从中间开始的,可以将其分解。
例如:城墙为2*5,假设我们从C格开始刷漆,且先向右再向左刷漆。那么可以以B,G和C,H的交界为分割线,右边部分需要从C出发,最后返回与C同列的对应位置H。左边部分则可以从B或G出发,最后的位置任意。先左后右类似。
A | B | C | D | E |
F | G | H | I | J |
- 1.从左上角格子A出发,最终返回左下角格子F
该情形下,每一列初次只能刷一格,这样才能刷满右边步步返回左下角格子F。每一次向下一列移动有两种选择,故若以i代表格子列数,b[i]代表共有i列时从左上角格子出发,回到左下角的方案数,则有递归关系b[i]=2*b[i]。且b[1]=1,b[2]=2。以此关系可以求出n列时的方案数。 - 2.从左上角格子A出发,最终位置不确定
最终位置不确定,既可以在同列的对应位置(1中已求),又可以在非同列的位置(待求)。若以i代表格子列数,a[i]代表共有i列时从左上角格子出发,最终停在非同列对应位置的方案数。最终位置与开始位置不同列,又有两种情况: - 2.1.A->B/G->F->G/B:向下一列刷,有两种方案到下一列,然后返回左下角,再刷下一列未刷格子之后,然后有两种方案再到下一列,可见有四种方案到下下列,所以刷完所有格子有4*a[i-2]个方案
- 2.2.A->F->B/G:向下刷,向下刷完之后有两种方法跳到下一列,刷完剩下的i-1列有2*a[i-1]种方案。
因此,可以得到 a[i]=b[i]+2a[i-1]+4a[i-2](i>=3);且a[1]=1,a[2]=6。
所以,对于n列,从角落出发,最终方案共有4*a[n]种;从中间出发,共有 ∑ i = 2 n − 1 ( 2 × b [ n − i + 1 ] × 2 × a [ i − 1 ] + 2 × b [ i ] × 2 × a [ n − i ] ) \sum_{i=2}^{n-1}(2 \times b[n-i+1] \times 2 \times a[i-1] + 2 \times b[i] \times 2 \times a[n-i])