传送门:Problem 1759

https://www.cnblogs.com/violet-acmer/p/9793209.html

题意:

  有N个彩灯关在同一条绳上,给出第一个彩灯的高度A,并给出求解其他彩灯的公式 h[i]=(h[i-1]+h[i+1])/2-1;

  求最后一个彩灯的最低高度,并且保证所有的彩灯都不会着地。

题解:

  二分第二个彩灯的高度h[2],h[2]越小,h[N]就越小。

  证明:

    假设最低的彩灯为 i。

    由公式可得 h[2] = (h[1]+h[3])/2-1;

    有了前两个彩灯的高度,将公式稍加变形,得h[3]=(h[2]+1)*2-h[1].

    即,对于 i > 2 ,有 h[i]=(h[i-1]+1)*2-h[i-2];

    (1):如果 i == N,则根据公式 h[i]=(h[i-1]+1)*2-h[i-2]; h[2] 越低,则h[3]就越低,近而推出h[4]就越底,当然也就推出 h[N]就越低。

    (2):如果 i < N,则有(1)可知,h[2]越低,则h[i-1],h[i]就越低,h[i+1]=(h[i]+1)*2-h[i-1];

          如果将h[i]+1中的 +1 去掉,h[i+1]=h[i]*2-h[i-1] => h[i]=(h[i+1]+h[i-1])/2 ,易知,i 为 线段(i-1)(i+1)得中点,此时,h[i]与h[i-1]同步下降,但不会改变h[i+1]得高度

    (因为下降后的两点i',(i-1)'与(i+1)构成的三角形与i,(i-1),(i+1)三点构成的三角形相似),但 +1 后,i与(i-1)同时下降,下降的角度相同,但h[i]多个+1,所以h[i+1]就变得越低,则h[N]就会变得越低。

    目前还没有能力证出 i < N 时,h[2]越低,则h[N]越低,有大佬会的话还望指点一番%%%%%%%%%

AC代码:

 #include<iostream>
#include<cstdio>
#include<cmath>
using namespace std;
#define eps 1e-6
const int maxn=1e3+; int N;
double A;
double h[maxn]; bool Check(double x)
{
h[]=A,h[]=x;
for(int i=;i <= N;i++)
{
h[i]=(h[i-]+)*-h[i-];
if(h[i] < eps)//注意,此处是与 eps 比较
return false;
}
return true;
} int main()
{
scanf("%d%lf",&N,&A);
double l=,r=A;
for(int i=;i <= ;++i)
{
double mid=l+((r-l)/);
if(Check(mid))
r=mid;
else
l=mid;
}
printf("%.2f\n",h[N]);
return ;
}

还有一个疑惑就是,为什么答案不向上取整?

printf()输出的结果是四舍五入的,如果h[N]=10.123,则输出结果为10.12,最后一个彩灯的高度又下降了一些,在下降后为什么就能保证所有的彩灯不着地?

    

poj 1759(二分)的更多相关文章

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

    POJ 1759 Garland  这个题wa了27次,忘了用一个数来储存f[n-1],每次由于二分都会改变f[n-1]的值,得到的有的值不精确,直接输出f[n-1]肯定有问题. 这个题用c++交可以 ...

  2. POJ - 2018 二分+单调子段和

    依然是学习分析方法的一道题 求一个长度为n的序列中的一个平均值最大且长度不小于L的子段,输出最大平均值 最值问题可二分,从而转变为判定性问题:是否存在长度大于等于L且平均值大于等于mid的字段和 每个 ...

  3. 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均 ...

  4. poj 3621 二分+spfa判负环

    http://poj.org/problem?id=3621 求一个环的{点权和}除以{边权和},使得那个环在所有环中{点权和}除以{边权和}最大. 0/1整数划分问题 令在一个环里,点权为v[i], ...

  5. POJ 3061 (二分+前缀和or尺取法)

    题目链接: http://poj.org/problem?id=3061 题目大意:找到最短的序列长度,使得序列元素和大于S. 解题思路: 两种思路. 一种是二分+前缀和.复杂度O(nlogn).有点 ...

  6. POJ 2456 (二分)

    题目链接: http://poj.org/problem?id=2456 题目大意:n个房子,m头牛,房子有一个横坐标,问将m头牛塞进房子,每两头牛之间的最大间隔是多少. 解题思路: 不难看出应该二分 ...

  7. POJ 1064 (二分)

    题目链接: http://poj.org/problem?id=1064 题目大意:一堆棍子可以截取,问要求最后给出K根等长棍子,求每根棍子的最大长度.保留2位小数.如果小于0.01,则输出0.00 ...

  8. poj 3228(二分+最大流)

    题目链接:http://poj.org/problem?id=3228 思路:增设一个超级源点和一个超级汇点,源点与每一个gold相连,容量为gold数量,汇点与仓库相连,容量为仓库的容量,然后就是二 ...

  9. poj 1759 Garland

    Garland Time Limit: 1000MS   Memory Limit: 10000K Total Submissions: 2365   Accepted: 1007 Descripti ...

随机推荐

  1. ELK实时日志分析平台环境部署--完整记录

    在日常运维工作中,对于系统和业务日志的处理尤为重要.今天,在这里分享一下自己部署的ELK(+Redis)-开源实时日志分析平台的记录过程(仅依据本人的实际操作为例说明,如有误述,敬请指出)~ ==== ...

  2. Python_初识函数和返回值_22

    #len s = '金老板小护士' len(s) def my_len(): #自定义函数 i = 0 for k in s: i += 1 print(i) length = my_len() pr ...

  3. NSCache的简单使用

    简介 1)NSCache 是苹果官方提供的缓存类,用法与 NSMutableDictionary 的用法很相似,在 AFNetworking 和 SDWebImage 中,使用它来管理缓存. 2)NS ...

  4. “耐撕团队”部署并测试onezero团队记帐本项目

    耐撕团队 对onezero团队记帐本项目的部署并测试 测试指标参见下面给出的博客: http://www.ltesting.net/ceshi/ceshijishu/xncs/2014/1030/20 ...

  5. Week 1 工程文档

    计算器——工程文档 一.输入与格式 1.数据规模 本文档的输入基于如下的要求: (1)既然是小学生,我们假设他们不会计算超过10亿的数字. (2)既然是出考试题,那么也不会出超过10亿道题目. 也就是 ...

  6. Java代码安全

    https://www.owasp.org/index.php/Category:Java

  7. react + dva + ant架构后台管理系统(一)

    一.什么是dva dva是蚂蚁金服推出的一个单页应用框架,对 redux, react-router, redux-saga进行了上层封装,没有引入新的概念,但是极大的程度上提升了开发效率: 二.安装 ...

  8. PP-物料清单用户处理手册

    1 系统操作时间 1. 新旧物料的替换需有BOM的产生2. BOM中组件发生变化时需有BOM的更改2 系统操作权限角色编码 角色名称Z:PP_PS_007_1000_200 PP主数据维护员 3 适应 ...

  9. java面向对象的核心思想

    java面向对象的特征之一:封装 1.封装性的使用 package edu.tongji.classdemo; /* 封装性 1.封装的目的:保护某些属性和方法不被外部所见 2.封装的实现 为属性和方 ...

  10. (二) 关于配置travis-ci持续集成python pytest测试的相关记录

    接上篇 上篇只是非常官方的描述了一下travis-ci是包括了些什么部分会如何工作但是并没有深入介绍也没有写demo. 这里先贴上一个我已经测试好了的python_travis-ci的环境 https ...