abc 184 D - increment of coins (python)
期待値でも遷移さえわかれば dp で求まるというやつ。
dp と メモ化再帰の両方で解いてみた。
a,b,c = map(int,input().split()) dp = [[[0]*101 for _ in range(101)] for i in range(101)] for i in range(100,a-1,-1): for j in range(100,b-1,-1): for k in range(100,c-1,-1): if i == 100 or j == 100 or k == 100: continue else: dp[i][j][k] = (dp[i+1][j][k]+1)*i/(i+j+k)\ + (dp[i][j+1][k]+1)*j/(i+j+k)\ + (dp[i][j][k+1]+1)*k/(i+j+k)\ print(dp[a][b][c]) import sys sys.setrecursionlimit(10**7) from functools import lru_cache a,b,c = map(int,input().split()) @lru_cache(maxsize=None) def f(i,j,k): if i == 100 or j == 100 or k == 100: return 0 return (f(i+1,j,k)+1)*i/(i+j+k)\ +(f(i,j+1,k)+1)*j/(i+j+k)\ +(f(i,j,k+1)+1)*k/(i+j+k)\ print(f(a,b,c))