加载中...

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\)。由于这样的子序列长度很短,可以直接统计。具体细节见代码。

code

posted @ 2025-03-12 20:32  jxs123  阅读(18)  评论(0)    收藏  举报