1 条题解

  • 0
    @ 2025-10-28 11:31:15

    题意回顾

    给定长度为 nn 的序列 aia_i,求将其划分为若干区间,使得每个区间和模 M=109+7M = 10^9+7 为偶数的方案数。
    答案对 MM 取模。

    数据范围:n3×105n \leq 3\times 10^50ai<M0 \leq a_i < M


    关键观察

    1. 模意义下的奇偶性

    在模 M=109+7M = 10^9+7(奇数)下,一个数 xx 的奇偶性就是 xmod2x \bmod 2,因为模运算与奇偶性兼容: (xmodM)mod2=xmod2 (x \bmod M) \bmod 2 = x \bmod 2 所以我们可以直接在前缀和模 MM 后考虑奇偶性。


    2. 前缀和与区间和

    设前缀和 Si=(j=1iaj)modMS_i = \left(\sum_{j=1}^i a_j\right) \bmod M
    区间 [l,r][l, r] 的和模 MM 为: (SrSl1)modM (S_r - S_{l-1}) \bmod M 其奇偶性 = (SrSl1)mod2(S_r - S_{l-1}) \bmod 2

    由于 MM 是奇数,模 MM 下的减法奇偶性等同于整数减法的奇偶性: $ (S_r - S_{l-1}) \bmod 2 = (S_r \bmod 2) - (S_{l-1} \bmod 2) \pmod{2} $ 即区间和偶     \iff SrS_rSl1S_{l-1} 奇偶性相同。


    动态规划解法

    状态设计

    dp[i]dp[i] 表示前 ii 个元素的合法划分方案数。

    边界:dp[0]=1dp[0] = 1(空序列算 1 种划分)。


    转移方程

    对于 dp[i]dp[i],枚举最后一段区间 [j+1,i][j+1, i],要求 (SiSj)mod2=0(S_i - S_j) \bmod 2 = 0,即 SiS_iSjS_j 奇偶性相同。

    所以: $ dp[i] = \sum_{j=0}^{i-1} [S_j \bmod 2 = S_i \bmod 2] \cdot dp[j] $


    直接计算是 O(n2)O(n^2),不可行。

    注意到我们只关心 SjS_j 的奇偶性,设:

    • eveneven = 当前所有 SjS_j 为偶数的 dp[j]dp[j] 之和
    • oddodd = 当前所有 SjS_j 为奇数的 dp[j]dp[j] 之和

    则:

    • SiS_i 偶,dp[i]=evendp[i] = even
    • SiS_i 奇,dp[i]=odddp[i] = odd

    然后更新:

    • SiS_i 偶,even=even+dp[i]even = even + dp[i]
    • SiS_i 奇,odd=odd+dp[i]odd = odd + dp[i]

    算法步骤

    1. 初始化:

      • S=0S = 0(偶)
      • dp0=1dp_0 = 1
      • even=1even = 1odd=0odd = 0
    2. 对于 ii11nn

      • S=(S+ai)modMS = (S + a_i) \bmod M
      • 如果 SS 偶:
        • dpi=evendp_i = even
        • even=(even+dpi)modMeven = (even + dp_i) \bmod M
      • 如果 SS 奇:
        • dpi=odddp_i = odd
        • odd=(odd+dpi)modModd = (odd + dp_i) \bmod M
    3. 输出 dpndp_n


    复杂度分析

    • 时间复杂度:O(n)O(n)
    • 空间复杂度:O(1)O(1)(只维护几个变量)

    总结

    本题的关键在于:

    1. 利用模奇数的性质保持奇偶性不变
    2. 将区间和条件转化为前缀和奇偶性相同
    3. 用动态规划配合奇偶计数优化到 O(n)O(n)

    最终算法简洁高效,可处理 n3×105n \leq 3\times 10^5 的数据规模。

    • 1

    信息

    ID
    4452
    时间
    1000ms
    内存
    256MiB
    难度
    10
    标签
    递交数
    4
    已通过
    1
    上传者