1 条题解
-
0
题意回顾
给定长度为 的序列 ,求将其划分为若干区间,使得每个区间和模 为偶数的方案数。
答案对 取模。数据范围:,。
关键观察
1. 模意义下的奇偶性
在模 (奇数)下,一个数 的奇偶性就是 ,因为模运算与奇偶性兼容: 所以我们可以直接在前缀和模 后考虑奇偶性。
2. 前缀和与区间和
设前缀和 。
区间 的和模 为: 其奇偶性 = 。由于 是奇数,模 下的减法奇偶性等同于整数减法的奇偶性: $ (S_r - S_{l-1}) \bmod 2 = (S_r \bmod 2) - (S_{l-1} \bmod 2) \pmod{2} $ 即区间和偶 与 奇偶性相同。
动态规划解法
状态设计
设 表示前 个元素的合法划分方案数。
边界:(空序列算 1 种划分)。
转移方程
对于 ,枚举最后一段区间 ,要求 ,即 与 奇偶性相同。
所以: $ dp[i] = \sum_{j=0}^{i-1} [S_j \bmod 2 = S_i \bmod 2] \cdot dp[j] $
直接计算是 ,不可行。
注意到我们只关心 的奇偶性,设:
- = 当前所有 为偶数的 之和
- = 当前所有 为奇数的 之和
则:
- 若 偶,
- 若 奇,
然后更新:
- 若 偶,
- 若 奇,
算法步骤
-
初始化:
- (偶)
- ,
-
对于 从 到 :
- 如果 偶:
- 如果 奇:
-
输出
复杂度分析
- 时间复杂度:
- 空间复杂度:(只维护几个变量)
总结
本题的关键在于:
- 利用模奇数的性质保持奇偶性不变
- 将区间和条件转化为前缀和奇偶性相同
- 用动态规划配合奇偶计数优化到
最终算法简洁高效,可处理 的数据规模。
- 1
信息
- ID
- 4452
- 时间
- 1000ms
- 内存
- 256MiB
- 难度
- 10
- 标签
- 递交数
- 4
- 已通过
- 1
- 上传者