题意:给排成一列的N个方块染色,可选颜色为红蓝绿黄,求被染的红色方块与绿色方块同为偶数的方案数。

分析:设染至第i个方块时,红绿皆为偶数的方案数为a(i), 恰有一为奇数的方案数为b(i), 都是奇数的方案数为c(i), 则染至第i+1个方块时,有如下递推关系:

a(i+1) = 2*a(i) + b(i) + 0*c(i)

b(i+1) = 2*a(i) + 2*b(i) + 2*c(i)

c(i+1) = 0*a(i) + b(i) + 2*c(i)

由上可得如下矩阵关系:

(a(i+1), b(i+1), c(i+1)) = ((2, 1, 0), (2, 2, 2), (0, 1, 2))* ((a(i), b(i), c(i)))

由于当i = 0时,有a(0) = 1, b(0) = 0, c(0) = 0

令A = ((2, 1, 0), (2, 2, 2), (0, 1 2))

则:((a(n), b(n), c(n)))= A^n * ((1, 0, 0)).

因此该题利用矩阵幂进行高效求解,时间复杂度为O(27logn)