递推 数学
感觉很水啊。。。
先烧开第一个,不断把热量传给后面的(也就是不断二分),再烧开第二个,同第一个一样做。以此类推。这样就是最佳方案(别问我怎么证明)
然后推一推式子,就可以得到这样一个递推式:
f[x+1]=f[x]∗(1−12x)
然后就这么推下去就行啦!
既然没有多组询问,不存数组也是可以的
注意精度问题
代码:
#include<cstdio>
#include<cstring>
#include<algorithm>
using namespace std;
int n;
double ans=0;
int main(){
scanf("%d",&n);
double now=420000.00/n;//一定要加.00
for (int i=1;i<=n;i++){
ans+=now;
now*=(1-0.5/i);//递推
}
printf("%.2lf\n",ans);
return 0;
}