UVA1555-- Garland(推导+二分)

题目链接

题意:有n个灯,给定第一盏灯A的高度,接下去每盏灯的高度按照公式计算,求使所有灯都不会落在地上(允许碰触)的B的最低高度。

思路:根据题目所给公式Hi=(Hj+1+Hj?1)/2?1,转化为Hi+1=2?Hi?Hi?1+2

当我们已知H1时,我们就可以二分枚举H2,求出符合题意的最小的B

#include <iostream>
#include <cstdio>
#include <cstring>
#include <algorithm>

using namespace std;

const double MAXN = 2000;
const int N = 1000; 

int n;
double A, B, H[N];

int judge(double mid) {
    H[2] = mid;
    for (int i = 3; i <= n; i++) {
        H[i] = 2 * H[i - 1] - H[i - 2] + 2;
        if (H[i] < 0)
            return false;
    }
    B = H[n];
    return true;
}

int main() {
    while (scanf("%d %lf", &n, &A) != EOF) {
        memset(H, 0, sizeof(H));
        double L = 0, R = MAXN, mid;
        H[1] = A;
        while (R - L > 1e-8) {
            mid = (L + R) / 2;
            if (judge(mid))
                R = mid;
            else
                L = mid;
        }
        printf("%.2lf\n", B);
    }
    return 0;
}

UVA1555-- Garland(推导+二分),布布扣,bubuko.com

时间: 2024-10-25 23:52:45

UVA1555-- Garland(推导+二分)的相关文章

题解 UVA1555 【Garland】(二分)

题面 最近有人问我这个题这么做,光讲几句貌似没什么用,干脆发个题解吧(话说什么有人会来问我这个蒟蒻) 题面的意思大概就是说每个点的高度都和旁边2个点有关,整张图没有高度小于0的点,求最后一个点B的最低值 是不是长得像个数学题?所以我们用数学的方法来思考一下Hi怎么得出. 题目中说过,Hi = (H[i?1] + H[i+1])/2-1,也就是已知旁边的2个点,就可以求出中间的点2,因为表达式已知,所以我们可以通过其中2个点求出第3个点. 简单地推一推:设第1个点为a,第2个点为b,第3个点为c,

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 che

[hdu2298] 物理推导+二分答案

题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=2298 #include<bits/stdc++.h> using namespace std; const double pi=acos(-1.0); const double g=9.8; const double eps=1e-9; int main() { int t; scanf("%d",&t); while (t--) { double x,y,v; sca

经典算法系列之:二分查找

1.前言 算法,在计算机中的地位,就相当于人类大脑的决策中枢系统,哪怕最简单的算法,其精妙的思维方式,都可以让人开启一扇新的视窗. 算法,它不仅仅只是狭义的用来解决计算机科学领域的问题,更是一种"思维方式".算法思维,是一种深度思考和创造的过程. 算法,只有真正理解了,而不只是所谓的知道,并将应用到生活.工作.学习等各个方面,它将一定使人受益终生. 2.原理推导 二分查找,前提是在排好序的基础上,每次查找,将数据集合分成两个部分,取中间索引数值与被查找的数值比较,逐次缩小查找范围,直到

推荐题目

二分 P2678 跳石头 P2440 木材加工 P1873 砍树 P1577 切绳子 P1824 进击的奶牛 P1316 丢瓶盖 UVA1555 Garland P1257 平面上的最接近点对 P1429 平面最近点对(加强版)(未完成) P1182 数列分段"Section II" P1281 书的复制(二分做法和上题一样,只是输出值变成了输出划分方式) 递推 P2386 放苹果 P1025 数的划分 DP&&MS P1091 合唱队形 P1140 相似基因 P144

POJ1759 Garland —— 二分

题目链接:http://poj.org/problem?id=1759 Garland Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2477   Accepted: 1054 Description The New Year garland consists of N lamps attached to a common wire that hangs down on the ends to which outermo

【推导】【找规律】【二分】hdu6154 CaoHaha&#39;s staff

题意:网格图.给你一个格点多边形的面积,问你最少用多少条边(可以是单位线段或单位对角线),围出这么大的图形. 如果我们得到了用n条边围出的图形的最大面积f(n),那么二分一下就是答案. n为偶数时,显然要尽量用斜边去拼矩形,于是f(i)=i*i/4-1 (i mod 4 == 2),f(i)=i*i/4-1(i mod 4 == 0). 当n为奇数时,尽量用i-1情况下的最长边向外扩张一个单位,于是f(i)=f(i-1)+[(i+1)/4]*2-1(i mod 2 == 1),方括号表示下取整.

POJ 1759 Garland(二分+数学递归+坑精度)

POJ 1759 Garland  这个题wa了27次,忘了用一个数来储存f[n-1],每次由于二分都会改变f[n-1]的值,得到的有的值不精确,直接输出f[n-1]肯定有问题. 这个题用c++交可以过,g++交过不了, f[i]=2+2*f[i-1]-f[i-2]; f[0]=A,f[1]=x; 二分枚举x的值,最终得到B的值(不是f[n-1]), 上述递推式是非齐次的二阶递推式,解其齐次特征方程,可以得到f[n-1]的齐次时的表达式,对于非齐次的,目前我还没法求出通式, B与f[n-1]的关

【枚举】【二分】【推导】Codeforces Round #477 (rated, Div. 2, based on VK Cup 2018 Round 3) D. Resource Distribution

题意:有两个服务要求被满足,服务S1要求x1数量的资源,S2要求x2数量的资源.有n个服务器来提供资源,第i台能提供a[i]的资源.当你选择一定数量的服务器来为某个服务提供资源后,资源需求会等量地分担给它们,要求每台服务器承担的资源需求不超过其所能提供的资源需求.给定一种合法的方案,每台服务器要么没有被分配给任何一个服务,或者被分配给其中一个服务. 对服务器按能提供的资源从小到大排序.枚举给S1分配的服务器数量i,然后在a数组中二分,就可以得到给S1提供的是哪i台服务器,它们占据了a数组中连续的