传送门: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. Fedora 19安装mysql

    安装数据库模块 Mysql和Mysql-server#yum install mysql mysql-server 开启mysql服务#systemctl start mysqld.service同样 ...

  2. Python_函数的镶嵌和作用域链_26

    def max(a,b): return a if a>b else b def the_max(x,y,z): #函数的嵌套调用 c = max(x,y) return max(c,z) pr ...

  3. Spring整合SpringMVC

    整合:把在springMVC配置文件中的spring提取出来整合为另一份配置文件 希望: 1).Spring的配置文件只是用来配置和业务逻辑有关的功能(数据源.事务控制.切面....) 2).Spri ...

  4. 在web.xml中配置监听器来控制ioc容器生命周期

    5.整合关键-在web.xml中配置监听器来控制ioc容器生命周期 原因: 1.配置的组件太多,需保障单实例 2.项目停止后,ioc容器也需要关掉,降低对内存资源的占用. 项目启动创建容器,项目停止销 ...

  5. python中的hasattr()、getattr()、setattr()

    hasattr()的用法和理解--hasattr(obj, target) 判断对象obj中是否含有,目标target属性,然后返回布尔值,如果有返回True,没有返回False. >>& ...

  6. php 7.1 openssl_decrypt() 代替 mcrypt_module_open() 方法

    公司开发微信第三方平台,之前用着一直是没有问题的.后来服务器到期进行项目搬迁就怎么也接收不到微信每10分钟的ticketle. 经过调试发现php版本由原来的7.0升到了7.1(该死....为什么没人 ...

  7. 软件工程_7th weeks

    内聚和耦合(学习笔记) 一.内聚 内聚是一个模块内部各成分之间相关联程度的度量.把内聚按紧密程度从低到高排列次序为: 1.偶然内聚:指一个模块内各成分为完成一组功能而组合在一起,它们相互之间即使有关系 ...

  8. AXI4

    axis  AXI4-stream 去掉了地址项,允许无限制的数据突发传输规模: 摘自http://xilinx.eetrend.com/blog/11443

  9. BZOJ3505 CQOI2014数三角形(组合数学)

    显然可以用总方案数减掉三点共线的情况.对于三点共线,一个暴力的做法是枚举起点终点,其间整点数量即为横纵坐标差的gcd-1.这样显然会T,注意到起点终点所形成的线段在哪个位置是没有区别的,于是枚举线段算 ...

  10. Nodejs+Express+Mysql实现简单用户管理增删改查

    源码地址 https://github.com/king-y/NodeJs/tree/master/user 目录结构 mysql.js var mysql = require('mysql'); v ...