Untitled
unknown
plain_text
2 years ago
884 B
4
Indexable
A= [2,3] MOD = 1e9+7 def dp3(): n = len(A) dp = [[0] * 3001 for _ in range(n)] for i in range(A[-1] + 1): dp[n - 1][i] = 1 pref = [0] * 3001 pref[0] = dp[n - 1][0] for i in range(1, 3001): pref[i] = pref[i - 1] + dp[n - 1][i] def get_sum(start, end): total = pref[end] if start > 0: total -= pref[start - 1] return total for ind in range(n - 2, -1, -1): for b_val in range(A[ind] + 1): c_val = A[ind] - b_val lb = max(b_val, A[ind + 1] - A[ind] + b_val) ub = A[ind + 1] dp[ind][b_val] = get_sum(lb, ub) pref[0] = dp[ind][0] for i in range(1, 3001): pref[i] = pref[i - 1] + dp[ind][i] ans = 0 for i in range(3001): ans += dp[0][i] return ans % MOD print(dp3())
Editor is loading...