SRM 448 div1 easy
期待値計算
#coding: utf-8 # 1 2 3 4 5 6 7 8 9 T cs = [0, 4,4,4,4,4,4,4,4,4,16] scr= [0,11,2,3,4,5,6,7,8,9,10] def solve(v,s): if s >= 21: return 0.0 else: a = sum(v) e = 0.0 for i in range(1,11): if v[i] > 0: n = v[i] v[i] -= 1 e += (solve(v, s+scr[i]) + 1) * n / a v[i] += 1 return e class TheBlackJackDivOne: def expected(self, cards): crd = [] for d in cards: c = d[0] if c == 'A': crd.append(1) cs[1] -= 1 elif '0' <= c <= '9': crd.append(int(c)) cs[int(c)] -= 1 else: crd.append(10) cs[10] -= 1 s = sum(crd) return solve(cs,s)