zoukankan      html  css  js  c++  java
  • BZOJ4113 : [Wf2015]Qanat

    设$f_i$表示用$i$个辅助井时代价的最小值,$x_i$表示此时最后一个辅助井的位置。

    则$f_i$是关于$x_i$的一个二次函数,其中系数跟$f_{i-1}$有关,递推求出极值点即可。

    时间复杂度$O(n)$。

    #include<cstdio>
    #define N 1010
    double w,h,A,B,a,b,x[N],f[N];int n,i;
    int main(){
      scanf("%lf%lf%d",&w,&h,&n);
      h/=w;
      A=1+h,B=1-h;
      f[0]=(1+h)*(1+h)/4;
      for(i=1;i<=n;i++){
        a=-0.25*B*B-0.5+B+f[i-1];
        b=-0.5*A*B;
        x[i]=-b/(a+a);
        f[i]=a*x[i]*x[i]+b*x[i]+0.25*A*A;
      }
      for(i=n-1;i;i--)x[i]*=x[i+1];
      for(printf("%.6f
    ",f[n]*w*w),i=1;i<=10&&i<=n;i++)printf("%.6f
    ",x[i]*w);
      return 0;
    }
    

      

  • 相关阅读:
    jedis 连接 虚拟机内redis服务
    数据库存储过程项目总结
    前端jsp联系项目相关经验
    学习做项目的一些随笔
    循环
    字典
    集合
    元组
    列表
    字符串
  • 原文地址:https://www.cnblogs.com/clrs97/p/5650287.html
Copyright © 2011-2022 走看看