洛谷P1984 [SDOI2008]烧水问题
2017-10-31 20:18
204 查看
递推 数学
题目传送门感觉很水啊。。。
先烧开第一个,不断把热量传给后面的(也就是不断二分),再烧开第二个,同第一个一样做。以此类推。这样就是最佳方案(别问我怎么证明)
然后推一推式子,就可以得到这样一个递推式:
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; }
相关文章推荐
- 洛谷P1984 SDOI2008烧水问题
- P1984 [SDOI2008]烧水问题
- 洛谷 P1984 [SDOI2008]烧水问题
- [P1984][SDOI2008]烧水问题
- P1984_[SDOI2008]烧水问题
- 洛谷 P1984 [SDOI2008]烧水问题
- 洛谷1984 [SDOI2008]烧水问题
- 洛谷 P1984 [SDOI2008] 烧水问题
- P1984 [SDOI2008]烧水问题
- P1984 [SDOI2008]烧水问题
- 【洛谷 P1984】[SDOI2008]烧水问题
- 洛谷 P1984 [SDOI2008]烧水问题
- 洛谷 P1984 [SDOI2008]烧水问题
- 洛谷 P1984 [SDOI2008]烧水问题
- [SDOI2008]烧水问题
- [SDOI2008]烧水问题
- [SDOI2008]烧水问题
- [SDOI2008]烧水问题
- 洛谷 1984 烧水问题
- 洛谷1984烧水问题(脑洞)