传送门: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. systemctl添加开机启动

    我们对service和chkconfig两个命令都不陌生,systemctl 是管制服务的主要工具, 它整合了chkconfig 与 service功能于一体. systemctl is-enable ...

  2. 6大爱上react 的理由

    本文翻译自:https://blog.syncano.io/reactjs-reasons-why-part-1/ 书写javascript 更加简单 (⚠️js 中混用html 也一直是外界所诟病的 ...

  3. 第三个sprint冲刺第二阶段

    内测版:

  4. sqlalchemy 使用pymysql连接mysql 1366错误

    一.错误情况 mysql 5.7.2 \python35\lib\site-packages\pymysql\cursors.py:166: Warning: (1366, "Incorre ...

  5. 『编程题全队』Beta 阶段冲刺博客五

    1.提供当天站立式会议照片一张 2.每个人的工作 (有work item 的ID) (1) 昨天已完成的工作 孙志威: 1.为新建提醒框添加了正则匹配限制 2.添加了新建Reminder的功能 3.初 ...

  6. FZU软工实践–团队成员交换交接情况

    0.前言 本次交接主要是为了之后Beta冲刺工作可以更加顺利而进行的.因为我跟其他队友交互不够方便,而且我们项目当前比较缺做前端的人员,后端功能已基本实现.所以我换出来了.希望大家可以顺顺利利做完一步 ...

  7. Maven -Maven配置tomcat插件 两种

    Maven Tomcat插件现在主要有两个版本,tomcat-maven-plugin和tomcat7-maven-plugin,使用方式基本相同. tomcat-maven-plugin 插件官网: ...

  8. shell脚本--循环结构

    shell的循环结构有while和for两种 for循环 #!/bin/bash #文件名:test.sh i=4 for i in 2 4 6 8 10 do echo $i done echo $ ...

  9. Essential Netty in Action 《Netty 实战(精髓)》读书笔记一

    NIO 最初是为 New Input/Output 的缩写.然而,Java 的 API 已经存在足够长的时间,它不再是新的.现在普遍使用的缩写来表示Nonblocking I/O (非阻塞 I/O). ...

  10. Mysql 5.7.21 单机多实例安装

    下载MySQL 5.7 二制包 [root@MySQL ~]# wget https://dev.mysql.com/get/Downloads/MySQL-5.7/mysql-5.7.21-linu ...