p r o b l e m 2 problem2 problem2 题解
题目
这里。
解题方法
设
d
p
i
,
j
dp_{i,j}
dpi,j表示
N
=
i
N=i
N=i时某种情况的答案,情况如下:
当
j
=
0
j=0
j=0,表示所有方向之和;
当
j
=
1
j=1
j=1,往上走;
当
j
=
2
j=2
j=2,往左走;
当
j
=
3
j=3
j=3,往右走。
根据定义,可得
d
p
i
,
0
=
d
p
i
,
1
+
d
p
i
,
2
+
d
p
i
,
3
dp_{i,0}=dp_{i,1}+dp_{i,2}+dp_{i,3}
dpi,0=dpi,1+dpi,2+dpi,3。
分三种情况讨论:
- 向上走,即 d p i , 1 = d p i − 1 , 0 dp_{i,1}=dp_{i-1,0} dpi,1=dpi−1,0;
- 向左走,即 d p i , 2 = d p i − 1 , 1 + d p i − 1 , 2 dp_{i,2}=dp_{i-1,1}+dp_{i-1,2} dpi,2=dpi−1,1+dpi−1,2;
- 向右走,即 d p i , 3 = d p i − 1 , 1 + d p i − 1 , 3 dp_{i,3}=dp_{i-1,1}+dp_{i-1,3} dpi,3=dpi−1,1+dpi−1,3。
继续简化,
d
p
i
,
0
=
d
p
i
−
1
,
0
+
d
p
i
−
1
,
1
+
d
p
i
−
1
,
2
+
d
p
i
−
1
,
1
+
d
p
i
−
1
,
3
dp_{i,0}=dp_{i-1,0}+dp_{i-1,1}+dp_{i-1,2}+dp_{i-1,1}+dp_{i-1,3}
dpi,0=dpi−1,0+dpi−1,1+dpi−1,2+dpi−1,1+dpi−1,3
=
d
p
i
−
1
,
0
+
(
d
p
i
−
1
,
1
+
d
p
i
−
1
,
2
+
d
p
i
−
1
,
3
)
+
d
p
i
−
1
,
1
\:\:\:\:\:\:\:\:\:\:=dp_{i-1,0}+(dp_{i-1,1}+dp_{i-1,2}+dp_{i-1,3})+dp_{i-1,1}
=dpi−1,0+(dpi−1,1+dpi−1,2+dpi−1,3)+dpi−1,1
=
d
p
i
−
1
,
0
×
2
+
d
p
i
−
1
,
1
\:\:\:\:\:\:\:\:\:\:=dp_{i-1,0}\times2+dp_{i-1,1}
=dpi−1,0×2+dpi−1,1
=
d
p
i
−
1
,
0
×
2
+
d
p
i
−
1
−
1
,
0
\:\:\:\:\:\:\:\:\:\:=dp_{i-1,0}\times2+dp_{i-1-1,0}
=dpi−1,0×2+dpi−1−1,0
=
d
p
i
−
1
,
0
×
2
+
d
p
i
−
2
,
0
\:\:\:\:\:\:\:\:\:\:=dp_{i-1,0}\times2+dp_{i-2,0}
=dpi−1,0×2+dpi−2,0
由上式可得:设
f
i
f_i
fi表示当
N
=
i
N=i
N=i时的答案,则
f
i
=
f
i
−
1
×
2
+
f
i
−
2
f_i=f_{i-1}\times2+f_{i-2}
fi=fi−1×2+fi−2。
因为有取模运算,所以我们可以边做边取模。
时间复杂度为
O
(
n
)
O(n)
O(n)。