BZOJ.2006.[NOI2010]超级钢琴(贪心 堆)

BZOJ
洛谷


思路和BZOJ3784一样,用前缀和+堆维护。做那题吧,不赘述啦。
(没错我就是水一个AC)


//54620kb   1060ms
#include <queue>
#include <cstdio>
#include <cctype>
#include <algorithm>
//#define gc() getchar()
#define MAXIN 500000
#define gc() (SS==TT&&(TT=(SS=IN)+fread(IN,1,MAXIN,stdin),SS==TT)?EOF:*SS++)
typedef long long LL;
const int N=5e5+5;

int sum[N],pos[19][N],Log[N];
char IN[MAXIN],*SS=IN,*TT=IN;
struct Node
{
    int val,si,l,r;
    bool operator <(const Node &x)const
    {
        return val<x.val;
    }
};
std::priority_queue<Node> q;

inline int read()
{
    int now=0,f=1;register char c=gc();
    for(;!isdigit(c);c=='-'&&(f=-1),c=gc());
    for(;isdigit(c);now=now*10+c-48,c=gc());
    return now*f;
}
inline int Max(int x,int y)
{
    return sum[x]>sum[y]?x:y;
}
inline int Query(int l,int r)
{
    int k=Log[r-l+1];
    return Max(pos[k][l],pos[k][r-(1<<k)+1]);
}

int main()
{
    const int n=read(),K=read(),L=read(),R=read();
    for(int i=1; i<=n; ++i) sum[i]=sum[i-1]+read(), pos[0][i]=i;
    for(int i=2; i<=n; ++i) Log[i]=Log[i>>1]+1;
    for(int j=1; j<=Log[n]; ++j)
        for(int t=1<<j-1,i=n-t; i; --i)
            pos[j][i]=Max(pos[j-1][i],pos[j-1][i+t]);
    for(int i=0; i+L<=n; ++i) q.push((Node){sum[Query(i+L,std::min(i+R,n))]-sum[i],sum[i],i+L,std::min(i+R,n)});
    LL ans=0;
    for(int i=1,p; i<=K; ++i)
    {
        Node tmp=q.top(); q.pop();
        ans+=tmp.val, p=Query(tmp.l,tmp.r);
        if(tmp.l<p) q.push((Node){sum[Query(tmp.l,p-1)]-tmp.si,tmp.si,tmp.l,p-1});
        if(p<tmp.r) q.push((Node){sum[Query(p+1,tmp.r)]-tmp.si,tmp.si,p+1,tmp.r});
    }
    printf("%lld\n",ans);

    return 0;
}

转载于:https://www.cnblogs.com/SovietPower/p/10290401.html

内容概要:本文系统介绍了算术优化算法(AOA)的基本原理、核心思想及Python实现方法,并通过图像分割的实际案例展示了其应用价值。AOA是一种基于种群的元启发式算法,其核心思想来源于四则运算,利用乘除运算进行全局勘探,加减运算进行局部开发,通过数学优化器加速函数(MOA)和数学优化概率(MOP)动态控制搜索过程,在全局探索与局部开发之间实现平衡。文章详细解析了算法的初始化、勘探与开发阶段的更新策略,并提供了完整的Python代码实现,结合Rastrigin函数进行测试验证。进一步地,以Flask框架搭建前后端分离系统,将AOA应用于图像分割任务,展示了其在实际工程中的可行性与高效性。最后,通过收敛速度、寻优精度等指标评估算法性能,并提出自适应参数调整、模型优化和并行计算等改进策略。; 适合人群:具备一定Python编程基础和优化算法基础知识的高校学生、科研人员及工程技术人员,尤其适合从事人工智能、图像处理、智能优化等领域的从业者;; 使用场景及目标:①理解元启发式算法的设计思想与实现机制;②掌握AOA在函数优化、图像分割等实际问题中的建模与求解方法;③学习如何将优化算法集成到Web系统中实现工程化应用;④为算法性能评估与改进提供实践参考; 阅读建议:建议读者结合代码逐行调试,深入理解算法流程中MOA与MOP的作用机制,尝试在不同测试函数上运行算法以观察性能差异,并可进一步扩展图像分割模块,引入更复杂的预处理或后处理技术以提升分割效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值