1 solutions
-
0
本题考察线性dp,考虑一个递推做法
表示 前 个字符,不管如何改变
*
, 可能产生的S
的个数表示 前 个字符,不管如何改变
*
, 可能产生的SO
的个数表示 前 个字符,不管如何改变
*
, 可能产生的SOS
的个数那么考虑当前位置 是
*
对于转移,这个位置可以是
O
也可以是S
, 那么$dp[i][0] = (dp[i - 1][0] \times 2 \% mod + 2^{前面*号的个数}) \% mod;$ 因为如果变成
S
, 那么前面可以通过改变*
对答案的贡献就是$dp[i][1] = (dp[i - 1][1] \times 2 \% mod + dp[i - 1][0]) \% mod;$
$dp[i][2] = (dp[i - 1][2] \times 2 \% mod + dp[i - 1][1]) \% mod;$
那么考虑当前位置 是
S
或者O
时的转移留给同学们思考。
- 1
Information
- ID
- 631
- Time
- 1000ms
- Memory
- 256MiB
- Difficulty
- 10
- Tags
- (None)
- # Submissions
- 13
- Accepted
- 1
- Uploaded By