同求第一题算期望那题怎么做,测试用例我都没懂怎么做出来的。
第二题做了个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;
}