F. Fibonacci String Subsequences
The DP state is set to indicate the number of matches dp[i][j][k]
between the string F(i) and the given string. There are two forms of transfer equations: 1. Completely provided by or completely provided by: : dp [ i ] [ j ] [ k ] = dp [ i − 1 ] [ j ] [ k ] ⋅ 2 len [ i − 2 ] dp[i][j][k]=dp[i-1][j][ k] \cdot 2^{len[i-2]}s[j...k]
s[j...k]
f(i-1)
f(i-2)
f(i-1)
k=n
dp[i][j][k]=dp[i−1][j][k]⋅2len[i−2]
k!=n
: d p [ i ] [ j ] [ k ] = d p [ i − 1 ] [ j ] [ k ] dp[i][j][k]=dp[i-1][j][k] dp[i][j][k]=dp[i−1 ] [ j ] [ k ]
is completelyf(i-2)
given by:
j=1
:dp [ i ] [ j ] [ k ] = dp [ i − 2 ] [ j ] [ k ] ⋅ 2 len [ i − 1 ] dp[i][j ][k]=dp[i-2][j][k] \cdot 2^{len[i-1]}dp[i][j][k]=dp[i−2][j][k]⋅2len[i−1]
j!=1
: d p [ i ] [ j ] [ k ] = d p [ i − 2 ] [ j ] [ k ] dp[i][j][k]=dp[i-2][j][k] dp[i][j][k]=dp[i−2][j][k]
2.s[j...mid]
由f(i-1)
提供,s[(mid+1)...k]
由f(i-2)
提供
d p [ i ] [ j ] [ k ] = ∑ m i d = j k − 1 d p [ i − 1 ] [ j ] [ m i d ] ⋅ d p [ i − 2 ] [ m i d + 1 [ k ] dp[i][j][k]=\sum_{mid=j}^{k-1} dp[i-1][j][mid] \cdot dp[i-2][mid+1[k] dp[i][j][k]=∑mid=jk−1dp[i−1][j][mid]⋅dp[i−2][mid+1[k]
Code:https://codeforces.com/contest/946/submission/173902552