• POJ 1759 Garland(二分答案)


    【题目链接】 http://poj.org/problem?id=1759

    【题目大意】

      有n个数字H,H[i]=(H[i-1]+H[i+1])/2-1,已知H[1],求最大H[n],
      使得所有的H均大于0.

    【题解】

      我们得到递推式子H[i]=2*H[i-1]+2-H[i-2],发现H[n]和H[2]成正相关
      所以我们只要二分H[2]的取值,同时计算每个H是否大于等于0即可。

    【代码】

    #include <cstdio>
    int n;
    double H[1010],A,B;
    bool check(double x){
        H[1]=A,H[2]=x;
        for(int i=3;i<=n;i++){
            H[i]=2.0*H[i-1]+2-H[i-2];
            if(H[i]<0)return 0;
        }return B=H[n],1;
    }
    int main(){
        while(~scanf("%d%lf",&n,&A)){
            double l=0,r=A;
            for(int i=0;i<100;i++){
                double mid=(l+r)/2;
                if(check(mid))r=mid;
                else l=mid;
            }printf("%.2f
    ",B);
        }return 0;
    }
    

      

  • 相关阅读:
    redis哨兵高可用
    数据库主从搭建
    docker 补充
    docker 进阶操作
    docker 简介
    数据可视化(Matplotlib)
    数据操作
    pandas练习
    Pandas简介
    python mysql utf-8 latin
  • 原文地址:https://www.cnblogs.com/forever97/p/poj1759.html
Copyright © 2020-2023  润新知