• POJ-1759 Garland---二分+数学


    题目链接:

    https://cn.vjudge.net/problem/POJ-1759

    题目大意:

    N个灯泡离地H_i,满足H1 = A ,Hi = (Hi-1 + Hi+1)/2 – 1,HN = B ,求最大B

    解题思路:

    如果二分B,会变成无从下手,发现如果求出H2,那么就可以之后的所有高度都固定了。

    所以二分H2,如果循环下去求到某一个Hi小于0,说明这个H2较小,应该变大。

    求出满足条件的最小的H2,这样就可以求出最低的B

    因为H2大的话,B肯定会大

    #include<iostream>
    #include<cstdio>
    #include<cstring>
    #include<algorithm>
    #include<vector>
    #include<queue>
    #define MID(l, r) (l + (r - l) / 2)
    #define lson(o) (o * 2)
    #define rson(o) (o * 2 + 1)
    using namespace std;
    typedef long long ll;
    const int INF = 1e9 +7;
    const int maxn = 1e6 + 10;
    const double eps = 1e-8;
    int main()
    {
        int n;
        double a;
        cin >> n >> a;
        double l = 0, r = 1e10;
        double h1, h2, h3, ans;
        for(int i = 0; i < 100; i++)
        {
            double mid = (l + r) / 2;
            h1 = a, h2 = mid;
            bool ok = 1;
            for(int j = 1; j <= n - 2; j++)//只需要循环n-2次即可,因为第一次循环求出H3,第n-2次循环求出Hn
            {
                h3 = 2 * h2 + 2 - h1;
                h1 = h2;
                h2 = h3;
                if(h3 < 0)
                {
                    ok = 0;
                    break;
                }
            }
            if(ok)ans = h3, r = mid;
            else l = mid;
        }
        printf("%.2f
    ", ans);
        return 0;
    }
  • 相关阅读:
    [USACO08MAR]土地征用Land Acquisition
    树链剖分
    [AHOI2008]紧急集合 / 聚会
    P1852 [国家集训队]跳跳棋
    Ant Trip(欧拉回路+并查集)
    单词游戏
    POJ3694 Network
    C++ STL小总结
    2-Sat专题
    6大名家带你穿越大半个中国去深思
  • 原文地址:https://www.cnblogs.com/fzl194/p/9028401.html
Copyright © 2020-2023  润新知