小学二年级就会的基本一次函数知识。

抽象一下题意:

求 \(n\) 个点 \((X_i, H_i)\) 中任意两个点组成的直线的截距的最大值(不小于 \(0\),\(X_i\) 递增)。


先说结论:先特判 \(n = 1\),然后答案只可能是由编号相邻的两个点组成的一次函数的截距。

为了方便,我们记 \(B\{(a, b), (c, d)\}\) 为 \((a, b)\)、\((c, d)\) 两点组成的一次函数的截距。

若 \(B \{ (X_i, H_i), (X_{i + 1}, H_{i + 1}) \} \lt B \{ (X_{i - 1}, H_{i - 1}), (X_{i + 1}, H_{i + 1}) \}\);

则必有 \(B \{ (X_{i - 1}, H_{i - 1}), (X_{i + 1}, H_{i + 1}) \lt B \{ (X_{i - 1}, H_{i - 1}), (X_{i}, H_{i}) \}\)。

证明:

根据已知条件,\((X_i, H_i)\) 必在直线 \((X_{i - 1}, H_{i - 1}) \leftrightarrow (X_{i + 1}, H_{i + 1})\) 之下。

那么 \((X_{i + 1}, H_{i + 1})\) 就在直线 \((X_{i - 1}, H_{i - 1}) \leftrightarrow (X_{i}, H_{i})\) 之上。

(可能语言有点疏漏太抽象,看图就好理解了)

(注:上文结论可以用三角形的性质来严格证明,读者自证不难)

那么只需要枚举出任意两个编号相邻的点算一次函数的截距,并取最大值即可。


如果你不知道一次函数相关知识,那就别做这题学习一下罢。

给一个斜率与截距的计算公式:

\[k = \frac{y_1 - y_2}{x_1 - x_2}, b = y_1 - k \times x_1
\]

不给代码了。

题解:AT_abc385_f [ABC385F] Visible Buildings的更多相关文章

  1. 【紫书】Urban Elevations UVA - 221 离散化

    题意:给你俯视图,要求依次输出正视图中可以看到的建筑物 题解:任意相邻的x间属性相同,所以离散化. 坑:unique只能对数组用.下标易错 list不能找某元素的next.用了个很麻烦的处理 数组: ...

  2. UVa 221城市正视图(离散化)

    https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem& ...

  3. X - Urban Elevations

     Urban Elevations  An elevation of a collection of buildings is an orthogonal projection of the buil ...

  4. UVa 221 (STL 离散化) Urban Elevations

    题意: 作图为n个建筑物的俯视图,右图为从南向北看的正视图,按从左往右的顺序输出可见建筑物的标号. 分析: 题中已经说了,要么x相同,要么x相差足够大,不会出现精度问题. 给这n个建筑物从左往右排序, ...

  5. UVA 221 - Urban Elevations(离散化)!!!!!!

    题意:给出一张俯视图.给出N个建筑物的左下标,长度,宽度,高度.现在求,从南面看,能看到那些建筑? Sample Input 14 160 0 30 60 30 125 0 32 28 60 95 0 ...

  6. Urban Elevations UVA - 221

    题目大意:给出建筑的俯视图,以及每个建筑的左下角坐标,宽度,长度,高度.求正视图可观察到的建筑的编号 思路:建筑物的可见性等于南墙的可见性,依据左下角排序后,逐个判断每个建筑是否可见.对南墙的x坐标进 ...

  7. UVA 221 Urban Elevations

    思路: 一些解释: ①:建筑的排序: 下面是以输入顺序为标号,在数组bd中的顺序: 排序后在数组bd中的顺序: 以后我们比较就按这个顺序 ②:x坐标的排序 x的内容是每一个建筑的左边界和右边界,我们把 ...

  8. 紫书第5章 C++STL

    例题 例题5-1 大理石在哪儿(Where is the Marble?,Uva 10474) 主要是熟悉一下sort和lower_bound的用法 关于lower_bound: http://blo ...

  9. UVa 221 Urban Elevations 城市正视图 离散化初步 无限化有限

    转载请注明: 仰望高端玩家的小清新 http://www.cnblogs.com/luruiyuan/ 题目大意: 题目传送门:UVa 221 Urban Elevations 给出城市中建筑物的x, ...

  10. UVa221 Urban Elevations

    离散化处理.判断建筑可见性比较麻烦.下面采用离散化解决:把所有的x坐标排序去重,在相邻两个x坐标表示的区间中,整个区间要么同时可见,要么同时不可见.如何判断该区间是否可见?具体做法是选取该区间中点坐标 ...

随机推荐

  1. LeetCode题目练习记录 _数组和链表01 _20211007

    LeetCode题目练习记录 _数组和链表01 _20211007 26. 删除有序数组中的重复项 难度简单2247 给你一个有序数组 nums ,请你原地 删除重复出现的元素,使每个元素 只出现一次 ...

  2. C++ 迪利克雷(Dirichlet)分布

    遇到一个要使用 dirichlet 分布的情形,发现 C++ 标准库中没有现成的.查阅维基百科发现,虽然它挺复杂,但是它跟 Gamma 分布有如下关系: 设有 K 个相互独立且分别满足 Gamma 分 ...

  3. spring boot shardingsphere 使用hikari连接池配置

    shardingsphere 使用hikari连接池配置: shardingsphere: datasource: names: ds ds: type: com.zaxxer.hikari.Hika ...

  4. 9-4 vector对象是如何增长的

    .size():容器中有多少元素 .capacity():不重新分配内存时,可容纳多少元素 .reserve(n):分配至少能容纳n个元素的内存 n>capacity时会分配使得capacity ...

  5. 2-5 C++ 类型别名与自动类型

    目录 2.5.1 类型别名(Type Alias) typedef using 2.5.2 auto类型说明符 基本说明 注意点 2.5.3 decltype类型说明符 基本说明 注意点 2.5.1 ...

  6. C# 请求 form-data格式的 接口 POSTMAN form-data

    HttpClient _httpClient = new HttpClient(); var postContent = new MultipartFormDataContent(); string ...

  7. Modbus调试、Modbus Slave、ModScan、Modbus Ploll、串口调试

    记录一下昨天调试Modbus调试. 上位机往下位机发送modbus指令.发送过去之后没有反应.后来才调试出来原来是下位机错一个位. 调试过程:用modScan 往modbus slave 发送modb ...

  8. PHP之项目环境变量设置

    需求 在PHP开发中为了区分线上生产环境还是本地开发环境, 如果我们能通过判断$_SERVER['RUNTIME_ENVIROMENT']为 'DEV'还是'PRO'来区分该多好, 可惜的是$_SER ...

  9. Lnmp编译安装(2020)

    之前写过几篇有关安装lnmp环境的文章,现在回顾感觉有些比较老了或者并不是好的操作,于是更新这篇 1. 安装Nginx 1) 依赖安装 yum install gcc gcc-c++ openssl ...

  10. JavaWeb 入门到实战

    注:看狂神说做的笔记 1.基本概念 1.1 前言 web开发: web:网页的意思,www.baidu.com,就是一个web页面 静态web: 不与数据库进行交互,静态显示网页数据(你刚学 html ...