首页 > 其他分享 >Sol - P2900 [USACO08MAR] Land Acquisition G

Sol - P2900 [USACO08MAR] Land Acquisition G

时间:2024-11-10 21:30:52浏览次数:1  
标签:直线 Land leq 队首 递增 jw Sol 斜率 P2900

完整准确地理解 FlushHu 的题解

0x00 初步分析

我们发现对于矩形 \(i,j\) 满足 \(h_i\leq h_j,w_i\leq w_j\),那么选 \(j\) 的时候一定可以并购 \(i\),因此将 \(i\) 删去。

将剩下的矩形按照 \(h\) 从大到小排序,此时 \(w\) 从小到大。

因为如果合并的不是一段连续区间,那么中间未被合并的部分一定可以合并。所以我们每次合并一段连续区间就好了。

设 \(f_i\) 为买下前 \(i\) 块土地的最小费用。

\[f_i=\min\{f_{j-1}+h_jw_i\} \]

0x10 对函数进行分析

我们将 \(y_j=h_jw_i+f_{j-1}\) 视作一个 \(f_{j-1}\) 和 \(h_j\) 为常量,\(w_i\) 为变量 的一次函数。

事实上需要对每个 \(w_i\) 维护直线 \(y_{1\sim i}\) 上对应的值中最小的一个。

维护一个临界值 \(k\) 的单调队列。

每次加入一条直线时,斜率 \(h_j\) 递减,求得与队尾直线的临界点 \(k\)。

因为 \(w_i\) 递增,我们每次将队首临界值 \(k\leq w_i\) 的删除,队首即为最优决策。

0x11 更本质地理解斜率优化

\(f_i=\min\{h_jw_i+f_{j-1}\}\),相当于对于每个 \(j\) 有 \(f_{j-1}=-h_jw_i+t_j\),\(f_i=\min\{t_j\}\)。

我们把 \((-h_j,f_{j-1})\) 视作二维平面上一个点。

想象我们正拿着一个斜率为 \(w_i\) 的直线从下到上,遇到第一个时纵截距 \(f_i\) 取到最小值。

随便画一堆点就可以发现,无论直线以怎样的斜率向上靠,总有一些点永远都不会第一次与直线相交,也就是说这些决策是没用的。剩下的有用的决策点会构成一个凸包。

在此题中,因为 \(w\) 递增,所以我们的单调队列中存的是若干个点满足 \(-h_j\) 递增(即 \(h_j\) 递减),\(f_{j-1}\) 递增,而且相邻两个点的斜率也递增。

插入新决策点时可能会遇到下图情况:

一直将队尾 \(t\) 出队,直到加入 \(i\) 后斜率仍递增。

我们再看回凸包那张图,手模一下,如果当前转移到 \(i\),一直将队首出队,直到队首和后一个的直线的斜率 \(>w_i\)。

此时队首即为能使 \(f_i\) 取得最小值的决策点。

0x12 更简单地理解斜率优化

当前以 \(i\) 结尾,有任意决策点 \(j,k\) 满足 \(1 \leq j<k\leq i\),如果 \(i\) 比 \(j\) 更优,那么必定满足:

\[f_{j-1}+h_jw_i\geq f_{k-1}+h_kw_i \]

也即:

\[w_i\geq \frac{f_{k-1}-f_{j-1}}{h_j-h_k} \]

\(w\) 单调递增,我们维护一个斜率 \(\frac{f_{j+2}-f_{j+1}}{h_{j+1}-h_j}\) 单调递减(即为下凸)的队列。

易证不在队列中的一定不会成为最优决策点。

0x20 总结

许多人轻易地看出了其中的玄机,但这仅仅只是日复一日的训练能够达到的吗?考场真的有足够的时间去思考吗?

当你参加比赛时,你会知道那不仅是短时间碰撞出的思维火花,更是平凡日子中对知识的深层认识和融会贯通。

正如大师所说:

题感做题就像盲人摸象,反复探索各个部位,不同局部性质难以联系,尝试很多次才能逐渐得到整体认知。而如果先知道了象的大致形态(问题的研究对象和可能的表示),再对具体的部位做研究逐步填充,局部之间是有联系的,自然探索起来事半功倍。

参考文献

[1]FlushHu. 题解 P2900[Z/OL].(2018-08-19)[2024-11-10].https://www.luogu.com.cn/article/z9eh1cp4

[2]刘承奥. 蔡德仁随笔:一些 OI 教学研究的故事[Z/OL].(2024-09-14)[2024-11-10].https://liu-cheng-ao.blog.uoj.ac/blog/9260

标签:直线,Land,leq,队首,递增,jw,Sol,斜率,P2900
From: https://www.cnblogs.com/zengzi/p/18538558

相关文章

  • P4381 [IOI2008] Island 基环树
    P4381[IOI2008]Island由于每个点只能向外连一条边,\(n\)个点\(n\)条边,中间有环,故不能再向外连边,所以构成基环内向树森林。叶子节点入度为\(0\),故可以判断叶子结点,倒推回环根,存每个子树的最大深度。最终dp处理每个基环树的环,分两种情况:经过环:分两种情况:顺时针和逆时针,......
  • GoLand 2024 安装(附激活补丁,亲测有效)
    第一步前往goland的官网,下载新版的goland下载完成后,进行安装,next,安装完成首次打开,会要求输入激活码才能使用第二步点击获取补丁文件保存下载之后进入文件夹***/JetBrains2023最新全家桶激活***找到文件/方式3:永久激活补丁+脚本(适合最新版本,可显示到2025年)点击进入......
  • 在Windows操作系统中,HKEY_CURRENT_USER\Console 是注册表中的一个键路径,它用于存储与
    在Windows操作系统中,HKEY_CURRENT_USER\Console是注册表中的一个键路径,它用于存储与控制台窗口(例如命令提示符窗口,CMD)的配置和设置相关的数据。以下是HKEY_CURRENT_USER\Console的详细说明:1. 位置路径:HKEY_CURRENT_USER\Console\2. 作用这个注册表项包含了当前用户对控制......
  • [TAD] Triangles of Absolute Differences-反帕斯卡三角形
    [IMO2018]TrianglesofAbsoluteDifferences-反帕斯卡三角形前言叠甲笔者不是学数竞的,在此感谢我的数竞生为我讲解题目。笔者学艺不精,且知识面浅薄。所以本文章仅用作搞抽象(争取练就惊人注意力。正文一、引入看完这道题目的要求,相信大家都能想起一个很熟悉的东西:......
  • 网页突破复制粘贴Absolute Enable Right Click & Copy插件
    网页突破复制粘贴AbsoluteEnableRightClick&Copy插件,可以先下载,微软官方有edge,chrome系列浏览器可以用。步骤如下1、2、3、4、这样,浏览器浏览网页遇到不能复制粘贴,则可以打开扩展程序的指针,允许复制粘贴功能。即可。 ......
  • 【前端】浅谈SOLID原则在前端的使用
    原创宁奇舞精选本文作者系360奇舞团前端开发工程师简介SOLID原则是由RobertC.Martin在2000年提出的一套软件开发准则,最初用于面向对象编程(OOP),旨在解决软件开发中的复杂性和维护问题。随着时间推移,它不仅在传统OOP语言中广泛应用,也被引入到JavaScript和TypeS......
  • .msc 是 Microsoft Management Console (MMC) 的管理单元文件扩展名,它通常用于存储管
    .msc是MicrosoftManagementConsole(MMC)的管理单元文件扩展名,它通常用于存储管理工具的配置和界面信息。MSC文件本质上是一个预设的管理工具,它包含了一些可以用来管理和配置Windows操作系统、网络、硬件等资源的界面和功能。简单来说,.msc文件是Windows系统中的管理工......
  • NOIP模拟(flandre、meirin、sakuya、scarlet) - 模拟赛总结
    flandre做得挺久的,大约做了\(\rm1h+\)。首先,选出来的序列一定是升序的,因为交换升序序列中的任意两个都不可能让「感觉效果」更高。然后来看选那些数组成这个序列。接下来是我赛时的想法:如果全为正数,那么自然正数全部都得选。需要考虑的是负数的情况。首先,选择一个负数不仅......
  • CentOS7执行yum命令遇到“Could not resolve host: mirrorlist.centos.org; 未知的错误
    LoadingmirrorspeedsfromcachedhostfileCouldnotretrievemirrorlisthttp://mirrorlist.centos.org/?release=7&arch=x86_64&repo=os&infra=stockerrorwas14:curl#6-"Couldnotresolvehost:mirrorlist.centos.org;未知的错误"Oneo......
  • 解决vite resolve alias的typescript报错
    报错如下: tsconfig.json配置如下:tsconfig.app.json需要添加一下配置:"compilerOptions":{"include":["src/**/*.ts","src/**/*.d.ts","src/**/*.tsx","src"],"exclude":["no......