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 }