Uriel's Corner

Research Associate @ Harvard University / Research Interests: Computer Vision, Biomedical Image Analysis, Machine Learning
posts - 0, comments - 50, trackbacks - 0, articles - 594
初始A,B两种汤都有n ml,每次可以执行如下四种操作之一,输出A先喝完的概率*1+AB同时喝完的概率*0.5,精度10^-5,递归+DP,但直接做会超过迭代深度,参考Discussion发现由输出精度可以推算n大于某个值的时候可以直接输出1


 1 #808
 2 #Runtime: 36 ms (Beats 100%)
 3 #Memory: 17 MB (Beats 79.25%)
 4 
 5 class Solution:
 6     def soupServings(self, n: int) -> float:
 7         if n >= 4276: 
 8             return 1.0
 9         @lru_cache(None)
10         def dp(x, y):
11             if x <= 0 and y > 0:
12                 return 1
13             if x <= 0 and y <= 0:
14                 return 0.5
15             if x > 0 and y <= 0:
16                 return 0
17             return (dp(x - 100, y) + dp(x - 75, y - 25) + dp(x - 50, y - 50) + dp(x - 25, y - 75)) * 0.25
18         
19         return dp(1.0 * n, 1.0 * n)

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理