251019 NOIP 模拟赛 T2 | dp 及其优化、调整法最优解性质、数形结合

news/2025/10/26 23:40:26/文章来源:https://www.cnblogs.com/lajishift/p/19167616

OJ 传送门

原题: QOJ 5500

题意

\(n\) 个屋子排成一列,每个屋子里一个人,每个屋子可以开酒吧。

每个人会去自己左右两侧最近的(分别)酒吧消费。

一个方案的价值为 \(\sum _ {酒吧} 来这个酒吧的人数 \times p_i\),其中 \(p_i\) 给定,求最大价值。

思路

显然是一个 dp?

转移顺序应该是什么 \(dp_j \rightarrow dp_i\)

\(dp_i\) 表示只考虑前 \(i\) 个人和酒吧,强制 \(i\) 位置开酒吧,此时的最大价值。

\[dp_i \leftarrow dp_j + (i - j) \times (p_i + p_j) \]

接下来是优化:

你发现这既不能斜率优化(两个既包含 \(i\) 又包含 \(j\)),也不决策单调(打表发现)。
然后平凡的 dp 就倒闭了,接下来的优化思路其实是脱离 dp 本身的,只有这个 dp 式有用。

优化思路 1

你是人类而非奶龙。

你注意到如果把 \((i, p_i)\) 画在坐标轴上,那么 \((i - j) \times (p_i + p_j)\) 就是一个梯形面积(不管系数)。

那么就转换成找出若干个点,相邻的梯形面积和最大,如上图感性理解,显然维护凸包。

优化思路 2

我是奶龙而非人类。

我会调整发推导最优解的性质。

假设 \(x \lt y \lt z\),且取 \(y\) 优于不取,则展开式子:

\[\begin{align*}(y - x)(p_x + p_y) + (z - y)(p_y + p_z) &\gt (z - x)(p_x + p_z) \\yp_x + yp_y - xp_x - xp_y + zp_y + zp_z - yp_y - yp_z &\gt zp_x + zp_z - xp_x - xp_z \\yp_x - xp_y + zp_y - yp_z &\gt zp_x - xp_z\end{align*} \]

然后我们需要发现这里有相似的结构:\(ip_j - jp_i\),记为 \(f(i,j)\)

其实 \(f(i,j)\) 就是向量 \(\vec(a) = (i, p_i) , \vec(b) = (j, p_j)\) 的叉积,转换成几何意义:

就是图 1 的黄色和绿色三角形面积和要大于图 2 的蓝色三角形面积,推导出要满足 \((y, p_y)\)\((x, p_x)\)\((z, p_z)\) 连成的直线上方。

等价于维护凸包。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/947144.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

常见问题解决 --- 未识别函数

常见问题解决 --- 未识别函数

小作业 14(2018 北京高考文科)

已知椭圆 \(M:\dfrac{x^2}{3}+y^2=1\),斜率为 \(k\) 的直线 \(l\) 与椭圆 \(M\) 有两个不同的交点 \(A\),\(B\)。设 \(P(-2,0)\),直线 \(PA\) 与椭圆 \(M\) 的另一个交点为 \(C\),直线 \(PB\) 与椭圆 \(M\) 的另一…

第六章习题

下面的机器数都以16进制表示w func1(w) func2(w)机器数 ; 值 机器数 ; 值 机器数 ; 值0000007F;127 0000007F;127 0000007F;12700000080;128 00000080;128 FFFFFF80;-128000000FF;255 000000FF;255 FFFFFFFF;-10000010…

速通 花卉鉴赏 短文

真鲜花灵感来自 P&KU3(上) 第二日《时空花园》一题。 顺带一提,我在查阅资料的时候并没有找到百度百科花钟对应 list 的一个 reference,最后在 wikipedia 里有 reference 的里面选了一些写,如果有知道的朋友可…

Agent常见模式 - 智慧园区

我希望用最直白的方式,让大家理解这四种常见的模式,并且真实商业落地和你想的可能完全相反。 模式讲解 第一种,工作流LLM 这种方式最直观,就是在你原有的工作流上插入Agent,替换掉原来代码做不了,必须人做的事请…

react-router7.9.4使用

安装 新版路由简化了安装,只需要以下命令即可 npm i react-router创建路由文件 在项目根目录下创建路由文件 src\router\index.ts import { lazy } from react import Root from ../components/root import { createH…

AI元人文:从战略能力到价值对话的实现框架

AI元人文:从战略能力到价值对话的实现框架 核心洞见:无需从零创造,“价值对话AI”可通过重构已验证的战略型AI技术基石实现。关键在于对其能力进行目标升华与伦理重塑。 一、四项核心重构架构重构:从利益博弈到价值…

Loneliness

Spending years with a group of people who are fundamentally dissimilar is loneliness. Feeling the passage of time is also so lonely. Memories and regrets can even be so lonely. The speed of time never …

Java流程控制——用户交互Scanner

Java流程控制——用户交互Scanner用户交互Scanner 使用Scanner类实现获取用户输入 Scanner s = new Scanner(System.in);可通过Scanner类的next()与nextLinevitable()方法获取输入的字符串, 在读取前一般用hasNext()与…

概率论测试

后续会上传批改版本

2025.10.26总结

今天做了23年5月份上半场的75道选择,怎么说,没及格,无论是知识点的广度上还是深度上都差的很远,以目前的水平考试,能不能通过完全靠运气。 下午题看了几眼,一共五六道比较固定的答题,熟悉题型和做题方法后应该就…

Python---开发桌面应用程序

早就知道可以使用Python的PyQT构建桌面应用程序了,但是没有具体实际过,以前都是使用前端来开发桌面应用程序的,安装依赖麻烦的要死,打包的时候还各种繁琐。 没想到使用Python来开发桌面应用程序如此的简单。 直接撸…

Python实现验证码识别的完整流程解析

验证码(CAPTCHA)是网络安全防护中最常见的技术之一,主要用于防止恶意程序批量请求服务。然而,随着深度学习和图像处理技术的发展,验证码的自动识别已成为人工智能领域的一个重要应用场景。本文将通过 Python 展示…

基于Python的验证码自动识别方案设计与实现

验证码是互联网安全的重要组成部分,广泛应用于注册、登录、投票等场景。其主要目的是防止机器人程序的恶意请求。然而,随着图像处理和深度学习的发展,验证码自动识别技术逐渐成熟。本文将介绍一种基于 Python 的验证…

2025/10/26

2025/10/26学习数据结构

大学生为什么要认真听课

读这几篇博客,让我颇有共鸣。不少大学生从非专业课松懈到专业课失守,上课刷短视频更加剧了注意力流失,让我们逐渐放弃学习。大一刚开始我也会上课认真听讲,晚自习会听一些网课,补充上课没听到的知识。从非专业课的…

中科大「数学分析教程——上册」习题选做 - Neuro

1.6 节 \(\mathbf{Problem\ 1}\) 解: \[\begin{align*} &(1). \lim_{n \rightarrow \infin}\left(1 + \frac{1}{n - 2}\right)^n & = &\lim_{n \rightarrow \infin}\left(1 + \frac{1}{n - 2}\right)^{n …

记录一下

今天终于开始写C++了 题目:代码: include using namespace std; int main() { int n = 0; int arr[100] = { 0 }; int k = 0; cin >> n; while (k < n) { cin >> arr[k]; ++k; } int max = 0; int m…

实用指南:基于Springboot的DDD实战(不依赖框架)

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

我是如何通过开发微信小游戏赚得人生第一桶金的

我是如何通过开发微信小游戏赚得人生第一桶金的我是如何通过开发微信小游戏赚得人生第一桶金的一、初识 2023-2024年开始接触游戏开发的,那时候公司的业务有些小游戏的玩法,玩法很简单,但是每场都挺火爆的,日活有1…