luogu1984 烧水问题 (找规律)

为了节省能量,我们会希望一个已经烧开了的水温度越低越好

那么可以得到结论,它要依次去碰当前温度从大到小的水

然后再把温度最高的烧开呗

可是直接模拟会T

稍微写一写大概能找到每次烧开花费能量的一个规律

但我哪找得出来啊

知道了以后也不会证

 1 #include<bits/stdc++.h>
 2 #define pa pair<int,int>
 3 #define CLR(a,x) memset(a,x,sizeof(a))
 4 using namespace std;
 5 typedef long long ll;
 6 const int maxn=1;
 7 
 8 inline ll rd(){
 9     ll x=0;char c=getchar();int neg=1;
10     while(c<'0'||c>'9'){if(c=='-') neg=-1;c=getchar();}
11     while(c>='0'&&c<='9') x=x*10+c-'0',c=getchar();
12     return x*neg;
13 }
14 
15 int main(){
16     //freopen("","r",stdin);
17     int i;
18     int n=rd();
19     double ans=0,t=420000.0/n;
20     for(i=1;i<=n;i++){
21         ans+=t,t=(t*(i*2-1))/(i*2);
22     }
23     printf("%.2lf\n",ans);
24     return 0;
25 }

 

posted @ 2018-10-22 21:47  Ressed  阅读(185)  评论(0编辑  收藏  举报