D - The Moon (记忆化搜索)

it2023-11-28  69

#include<bits/stdc++.h> using namespace std; double dp[1010]; double p; double dfs(int q){ if(q>=1000) return 100.0/p; if(dp[q]!=-1) return dp[q]; dp[q]=1.0+p/100.0*(1.0-q/1000.0)*dfs(q+20)+(1.0-p/100.0)*dfs(q+15); return dp[q]; } int main(){ int T;scanf("%d",&T); for(int cas=1;cas<=T;cas++){ for(int i=1;i<=1000;i++) dp[i]=-1; scanf("%lf",&p); printf("Case %d: %.10lf\n",cas,dfs(20)); } return 0; }

 

最新回复(0)