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

抽象一下题意:

求 \(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. Sealos Devbox 使用教程:使用 Cursor 开发一个高仿苹果官网

    本教程将通过实战案例,详细介绍如何利用 Cursor 和 Devbox 开发环境,在一天内完成专业企业官网的开发和部署.适合产品经理.初级开发者或任何想要快速搭建网站的人群. 因为业务的需要,我需要开 ...

  2. C++处理系统相关权限问题

    1.给某个文件或文件夹赋予特定用户的特定访问权限 /* 给文件(夹)szPath设置用户名为pszAccount的可读可写可修改权限 */ bool GiveTheAccountPrivToFile( ...

  3. AI 实战篇:Spring-AI再更新!细细讲下Advisors

    在2024年10月8日,Spring AI再次进行了更新,尽管当前版本仍为非稳定版本(1.0.0-M3),但博主将持续关注这些动态,并从流行的智能体视角深入解析其技术底层.目前,Spring AI仍处 ...

  4. java 子类继承父类 -- 重写、覆盖

    class Foo { public int a; public static final String str = "foo"; public Foo() { a = 3; } ...

  5. Mybatis【19】-- Mybatis自关联多对多查询

    注:代码已托管在GitHub上,地址是:https://github.com/Damaer/Mybatis-Learning ,项目是mybatis-15-oneself-many2many,需要自取 ...

  6. 探索实用的Java工具类

    1.排序 有时需要对集合进行排序.此时可以使用Collections的sort方法. List<Integer> list = new ArrayList<>(); list. ...

  7. Mysql8.0修改配置参数lower_case_table_names

    现象 今天在配置一个环境的数据库,所使用的系统要求该数据库 lower_case_table_names = 1 (对数据库表明.列名大小写不敏感) 我看了一下,在 Windows 上,默认值为 1. ...

  8. Reviewbot 开源 | 这些写 Go 代码的小技巧,你都知道吗?

    Reviewbot 是七牛云开源的一个项目,旨在提供一个自托管的代码审查服务, 方便做 code review/静态检查, 以及自定义工程规范的落地. 自从上了 Reviewbot 之后,我发现有些 ...

  9. vue中this.$nextTick()

    this.$nextTick()是在下一次DOM更新后执行其指定回调函数 this.$nextTick(回调函数) 使用场景:在改变数据后,要对更新后的DOM进行操作时使用

  10. T 语言语法设计(预审稿)

    欢迎吐槽 一. 字面量 1. 数字字面量 0, 0xff, 0b10_01, .1 2. 字符串字面量 'x', "x\n\uffff\Uffffffff", `x{1}y` 3. ...