上海邀请赛 A题目 HDU 5236(dp)

先求出没有ctrl+s的时候构造长度为i的期望f[i] 。然后枚举保存的次数,,求出最小即可。

#include<cstdio>#include<cstdio>#include<cmath>#include<queue>#include<stack>#include<string>#include<cstring>#include<iostream>#include<map>#include<vector>#include<algorithm>#include<set>#include<cmath>using namespace std;const int mmax = 100010;const double inf = 1e20;double f[mmax];void build(double p){f[0]=0;for(int i=1;i<mmax;i++){f[i]=(f[i-1]+1)/(1.0-p);}}int main(){int t,ca=0;scanf("%d",&t);while(t–){int n,x;double p;scanf("%d %lf %d",&n,&p,&x);build(p);double ans=inf;for(int i=0;i<n;i++){int k=n/(i+1);double tmp=f[k+1]*(n%(i+1))+f[k]*(i+1-n%(i+1));tmp+=1.0*(i+1)*x;ans=min(ans,tmp);}printf("Case #%d: %.6lf\n",++ca,ans);}return 0;}

自己变得跟水晶一般透明,

上海邀请赛 A题目 HDU 5236(dp)

相关文章:

你感兴趣的文章:

标签云: