斜率优化——operator_

文章介绍了如何使用斜率优化解决一种动态规划问题,其中涉及到最大可爱值的计算。在给定序列中,可以选择一个值并重新插入到任意位置以最大化序列的可爱值。通过推导,将问题转换为计算几何问题,并利用斜率优化和上凸壳来提高求解效率。虽然单调队列在此问题中不适用,但通过正反两遍处理可以找到最优解。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

引入

考虑一个 d p dp dp 方程: d p [ i ] = M i n / M a x ( a [ i ] ∗ b [ j ] + c [ i ] + d [ j ] ) dp[i]=Min/Max(a[i]*b[j]+c[i]+d[j]) dp[i]=Min/Max(a[i]b[j]+c[i]+d[j])

单调队列优化就没用了,所以引入斜率优化。

例题(青春猪头少年不会…)

题目大意

定义一个序列的可爱值为 ∑ i = 1 n a i ∗ i \sum_{i=1}^na_i*i i=1naii ,现在可以选一个值拿出,再重新插入到序列的任意位置,求最大可爱值。

2 ≤ n ≤ 3 ∗ 1 0 5 , 0 ≤ ∣ v i ∣ ≤ 1 0 6 2\le n\le3*10^5,0\le|v_i|\le10^6 2n3105,0vi106

题解

考虑把 a i a_i ai 放到 j j j 去,那么显然 i i i 以前的贡献不变, j j j 以后的贡献不变。

那么 c u t e ′ = c u t e + ( j − i ) ∗ a i − ( s j − s i ) {cute}^{'}=cute+(j-i)*a_i-(s_j-s_i) cute=cute+(ji)ai(sjsi)

我们要求的就是 c u t e + M a x ( a i ∗ j − s j − a i ∗ i + s i ) cute+Max(a_i*j-s_j-a_i*i+s_i) cute+Max(aijsjaii+si)

定义 f [ i ] f[i] f[i] 是拿出 a i a_i ai 的最大值。

f [ i ] = c u t e − a i ∗ i + s i + M a x ( a i ∗ j − s j ) f[i]=cute-a_i*i+s_i+Max(a_i*j-s_j) f[i]=cuteaii+si+Max(aijsj)

考虑斜率优化,令 j 1 j_1 j1 j 2 j_2 j2 优。

则有 a i ∗ j 1 − s j 1 ≥ a i ∗ j 2 − s j 2 a_i*j_1-s_{j_1}\ge a_i*j_2-s_{j_2} aij1sj1aij2sj2

a i ∗ ( j 1 − j 2 ) ≥ s j 1 − s j 2 a_i*(j_1-j_2)\ge s_{j_1}-s_{j_2} ai(j1j2)sj1sj2

s j 1 − s j 2 j 1 − j 2 ≤ a i {{s_{j_1}-s_{j_2}}\over{j_1-j_2}}\le a_i j1j2sj1sj2ai 所以 P i ( i , s i ) P_i(i,s_i) Pi(i,si)

然后按 P i P_i Pi 维护上凸壳,二分查找即可。

但是注意到 j j j 可能大于 i i i ,所以正反要做两遍。

a n s = M a x ( f [ i ] ) ans=Max(f[i]) ans=Max(f[i])

( f [ i ] f[i] f[i] 仅供理解用,实际并不需要)

代码

没调出来

方法总结

形如 d p [ i ] = M i n / M a x ( a [ i ] ∗ b [ j ] + c [ i ] + d [ j ] ) dp[i]=Min/Max(a[i]*b[j]+c[i]+d[j]) dp[i]=Min/Max(a[i]b[j]+c[i]+d[j]) ,又满足一些条件的方程都可以考虑斜优,先推式子,转化为计算几何,之后可以考虑单调性、二分、三分等方法快速求解。

### 常见的线性回归预测模型及其应用场景 #### 一元线性回归模型 一元线性回归是最简单的形式,用于描述单个自变量 \(X\) 和因变量 \(Y\) 的线性关系。其数学表达式为: \[ Y = \beta_0 + \beta_1 X + \epsilon \] 其中,\(\beta_0\) 是截距项,\(\beta_1\) 是斜率参数,\(\epsilon\) 表示随机误差[^1]。 这种模型适用于简单的关系研究,例如根据房屋面积预测房价,或者依据广告投入金额预测销售额增长情况。 #### 多元线性回归模型 当存在多个自变量时,可以采用多元线性回归模型。它的通用形式如下: \[ Y = \beta_0 + \beta_1 X_1 + \beta_2 X_2 + ... + \beta_n X_n + \epsilon \] 这里,\(n\) 表示自变量的数量[\(^{1}\)]。此模型广泛应用于多因素影响下的预测任务,比如综合考虑天气状况、节假日效应以及促销活动等因素对商品销售的影响。 对于实际操作中的具体实现方式,在 Python 中可以通过 `scikit-learn` 库完成建模过程。下面展示一段构建多元线性回归模型的基础代码片段: ```python from sklearn.linear_model import LinearRegression import numpy as np # 构造训练集数据 X_train = np.array([[1, 1], [1, 2], [2, 2], [2, 3]]) y_train = np.dot(X_train, np.array([1, 2])) + 3 model = LinearRegression() model.fit(X_train, y_train) print("Coefficients:", model.coef_) print("Intercept:", model.intercept_) ``` 上述脚本展示了如何利用给定的数据拟合出最佳直线,并提取相应的系数与截距值。 #### 正则化线性回归模型 为了应对可能存在的过拟合现象或解决多重共线性问题,引入了带有惩罚机制的变体——正则化线性回归。主要包括两种主要类型:岭回归 (Ridge Regression) 和 Lasso 回归 (Least Absolute Shrinkage and Selection Operator)[^2]。 - **岭回归**: 它通过增加二次范数约束来缩小权重大小,从而降低复杂度。 数学表示为: \[ J_{ridge} (\theta)= MSE+\alpha ||w||^{2}_{2} \] - **Lasso 回归**: 不仅能够控制模型复杂程度,还具有特征选择功能,因为它倾向于使某些不重要的特征对应的系数变为零。 对应的目标函数定义为: \[ J_{lasso} (\theta )=MSE+\lambda |\omega | _ {1 } \] 这两种技术都旨在优化原始目标的同时加入额外限制条件,进而提升泛化能力。 --- ### 总结说明 综上所述,无论是基础的一元或多维版本还是改进后的正则化方案,它们各自都有特定适用范围及优势所在。使用者需根据项目需求合理挑选适合的方法论加以运用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值