problem2 题解

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=dpi1,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=dpi1,1+dpi1,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=dpi1,1+dpi1,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=dpi1,0+dpi1,1+dpi1,2+dpi1,1+dpi1,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} =dpi1,0+(dpi1,1+dpi1,2+dpi1,3)+dpi1,1
           = d p i − 1 , 0 × 2 + d p i − 1 , 1 \:\:\:\:\:\:\:\:\:\:=dp_{i-1,0}\times2+dp_{i-1,1} =dpi1,0×2+dpi1,1
           = d p i − 1 , 0 × 2 + d p i − 1 − 1 , 0 \:\:\:\:\:\:\:\:\:\:=dp_{i-1,0}\times2+dp_{i-1-1,0} =dpi1,0×2+dpi11,0
           = d p i − 1 , 0 × 2 + d p i − 2 , 0 \:\:\:\:\:\:\:\:\:\:=dp_{i-1,0}\times2+dp_{i-2,0} =dpi1,0×2+dpi2,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=fi1×2+fi2
因为有取模运算,所以我们可以边做边取模。
时间复杂度为 O ( n ) O(n) O(n)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值