同求第一题算期望那题怎么做,测试用例我都没懂怎么做出来的。

第二题做了个0.75的,O(n)时间复杂度,O(m)空间复杂度,后面大数超时。有时间复杂度更低的方法么?

int64_t totalWays(int n, int m)
{
    deque<int> dp(m, 0);

    dp[0] = 1;

    int sum = 1;

    for (int i = 1; i < min(n, m); ++i)
    {
        for (int j = 0; j < i; ++j)
        {
            dp[i] += dp[j]%10007;
        }
        dp[i] += 1;
        sum += dp[i];
        sum = sum % 10007;
    }

    if (n < m)
        return dp[n - 1];

    for (int i = m; i < n; ++i)
    {
        int front = dp.front();
        dp.pop_front();
        dp.push_back(sum);

        sum += (sum - front);
        sum %= 10007;
        if (sum < 0)
            sum += 10007;
    }

    return dp[m-1] % 10007;
}