BZOJ3156 防御准备 水水的斜率优化(斜率优化总结)

本文通过一道具体问题,介绍斜率优化动态规划方法的应用。文章分析了如何通过斜率优化减少状态转移的时间复杂度,详细解释了式子化简过程及斜率单调性的判断依据。

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

前言

好久没做斜率优化的题了,找个水题来练练手顺便总结一下我对斜率优化的理解。

题目大意

现在有N个检查点和一个给定的序列Ai,在一个检查点上放置一座塔的花费是Ai,放置一个木偶的花费是该位置右边最近的塔离它的距离(最后一个一定要放塔)。
现在每个检查点必须要放塔或者木偶。问最小的花费。

N <= 106
Ai <= 106

解题思路

一看就知道是裸的斜率优化……
我们可先把序列翻转,设Fi表示做完前i个检查点,并且在第i个检查点放置一个塔的最小花费。转移式很简单Fi=min(Fj+(ij)(ij1)2)j[1,i)。那么很明显要用斜率优化。

斜率优化-式子的化简

j>k,那么如果j优于k就有:
Fj+(ij)(ij1)2 < Fk+(ik)(ik1)2
2Fj+i22ij+j+j2 < 2Fk+i22ik+k+k2
我们设Gj=2Fj+j+j2,式子两边同时约掉i2
Gj2ij < Gk2ik
GjGk < i(2j2k)
GjGk2j2k<i (这显然就是斜率的式子)

斜率优化-单调性分析

然后就到了分析单调性的时候了,之前一直对怎么分析单调性一脸懵逼,所以现在仔细的写一写。
我们设T(k,j)=GjGk2j2k
我们现在知道GjGk2j2k<i,我们观察在单调队列中连续的三项应该有什么关系,设这三项为l,k,j(l<k<j),如果单调队列中的斜率是单调递减的,就是说T(l,k)>T(k,j),那么如果k是最优解,那么T(l,k)<i而且T(k,j)>i。这显然与上面的式子矛盾了!所以k是不可能成为优有解的,那么我们只需要维护一个斜率单调递增的序列就可以了。那么每次队首就是我们所要的最有解,而当队首的斜率小于i是我们把他删掉就可以了。

程序

// YxuanwKeith
#include <cstring>
#include <cstdio>
#include <algorithm>
#include <cmath>

using namespace std;
typedef long long LL;

const int MAXN = 1e6 + 5;

int N, A[MAXN], D[MAXN];
LL F[MAXN], G[MAXN];

double Slope(int x, int y) {
    return 1.0 * (G[y] - G[x]) / (2.0 * (y - x));
}

int main() {
    scanf("%d", &N);
    for (int i = 1; i <= N; i ++) scanf("%d", &A[i]);
    for (int i = 1; i <= N / 2; i ++) swap(A[i], A[N - i + 1]);

    int l = 1, r = 0;
    LL Ans = 1ll << 60;
    for (int i = 1; i <= N; i ++) {
        while (l < r && Slope(D[l], D[l + 1]) < 1.0 * i) l ++;
        int p = D[l];
        F[i] = F[p] + 1ll * (i - p) * (i - p - 1) / 2 + A[i];
        Ans = min(Ans, F[i] + 1ll * (N - i + 1) * (N - i) / 2);
        G[i] = F[i] * 2 + i + 1ll * i * i;
        while (l < r && Slope(D[r - 1], D[r]) > Slope(D[r], i)) r --;
        D[++ r] = i;
    }
    printf("%lld", Ans);
}
内容概要:该研究通过在黑龙江省某示范村进行24小时实地测试,比较了燃煤炉具与自动/手动进料生物质炉具的污染物排放特征。结果显示,生物质炉具相比燃煤炉具显著降低了PM2.5、CO和SO2的排放(自动进料分别降低41.2%、54.3%、40.0%;手动进料降低35.3%、22.1%、20.0%),但NOx排放未降低甚至有所增加。研究还发现,经济性和便利性是影响生物质炉具推广的重要因素。该研究不仅提供了实际排放数据支持,还通过Python代码详细复现了排放特征比较、减排效果计算和结果可视化,进一步探讨了燃料性质、动态排放特征、碳平衡计算以及政策建议。 适合人群:从事环境科学研究的学者、政府环保部门工作人员、能源政策制定者、关注农村能源转型的社会人士。 使用场景及目标:①评估生物质炉具在农村地区的推广潜力;②为政策制定者提供科学依据,优化补贴政策;③帮助研究人员深入了解生物质炉具的排放特征和技术改进方向;④为企业研发更高效的生物质炉具提供参考。 其他说明:该研究通过大量数据分析和模拟,揭示了生物质炉具在实际应用中的优点和挑战,特别是NOx排放增加的问题。研究还提出了多项具体的技术改进方向和政策建议,如优化进料方式、提高热效率、建设本地颗粒厂等,为生物质炉具的广泛推广提供了可行路径。此外,研究还开发了一个智能政策建议生成系统,可以根据不同地区的特征定制化生成政策建议,为农村能源转型提供了有力支持。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值