3.12——..K
..K
限时每日一题day13。做得非常顺的一道子序列计数 \(dp\)。个人感觉也是很不错的一道题。
分类讨论:三个数要么都是偶数,要么恰有两个奇数。
都是偶数的情况好计算,主要是恰好两个奇数的情况:
手玩一下可以发现恰有两个奇数的子序列的每三个数形式必须相同(奇偶奇 情况对应 \(101101101...101\),其中1奇0偶)。
于是子序列的形式固定,可以进行子序列计数 \(dp\)。
状态定义:
- \(dp[i][0]\):考虑前 \(i\) 个数,形式为 \(101101...\) 的子序列数量
- \(dp[i][1]\):考虑前 \(i\) 个数,形式为 \(101101...1\) 的子序列数量
- \(dp[i][2]\):考虑前 \(i\) 个数,形式为 \(101101...10\) 的子序列数量
状态转移也很简单(见代码),\(011\), \(110\)的情况同理。
最后不要忘记对于每种情况,要去除长度为 \(0,1,2\) 的子序列,因为要求子序列长度至少为 \(3\)。由于这样的子序列长度很短,可以直接统计。具体细节见代码。