[HNOI2002]营业额统计

本文深入探讨了Treap数据结构的实现原理及其在前驱后继查询问题中的高效应用。通过具体代码示例,详细讲解了如何利用Treap进行插入操作,并实现对有序集合中元素的快速查找。文章提供了完整的C++实现代码,包括节点更新、左旋右旋调整、插入及查询算法。

treap板子题。

前驱后继查询。

代码:

#include<ctime>
#include<cstdio>
#include<cstdlib>
using namespace std;
#define N 33000
int n,a;
int rt,tot;
struct Treap
{
    int ls,rs;
    int siz,w,rnd,v;
}tr[N];
void update(int u)
{
    tr[u].siz = tr[tr[u].ls].siz + tr[tr[u].rs].siz + tr[u].w;
}
void lturn(int &x)
{
    int y = tr[x].rs;
    tr[x].rs = tr[y].ls;
    tr[y].ls = x;
    tr[y].siz = tr[x].siz;
    update(x);
    x=y;
}
void rturn(int &x)
{
    int y = tr[x].ls;
    tr[x].ls = tr[y].rs;
    tr[y].rs = x;
    tr[y].siz = tr[x].siz;
    update(x);
    x=y;
}
void insert(int &k,int x)
{
    if(!k)
    {
        k = ++tot;
        tr[k].siz = tr[k].w = 1;
        tr[k].v = x,tr[k].rnd = rand();
        return ;
    }
    tr[k].siz++;
    if(tr[k].v==x)
    {
        tr[k].w++;
        return ;
    }else if(tr[k].v<x)
    {
        insert(tr[k].rs,x);
        if(tr[tr[k].rs].rnd<tr[k].rnd)lturn(k);
    }else
    {
        insert(tr[k].ls,x);
        if(tr[tr[k].ls].rnd<tr[k].rnd)rturn(k);
    }
}
int ans = 0;
void qq(int u,int x)
{
    if(!u)return ;
    if(tr[u].v<=x)
    {
        ans = tr[u].v;
        qq(tr[u].rs,x);
    }else qq(tr[u].ls,x);
}
void hj(int u,int x)
{
    if(!u)return ;
    if(tr[u].v>=x)
    {
        ans = tr[u].v;
        hj(tr[u].ls,x);
    }else hj(tr[u].rs,x);
}
int main()
{
    srand(time(NULL));
    scanf("%d",&n);
    int as = 0;
    insert(rt,-2000005);
    insert(rt,2000005);
    for(int i=1;i<=n;i++)
    {
        scanf("%d",&a);
        if(i==1)
        {
            insert(rt,a);
            as+=a;
            continue;
        }
        ans = -2000005;
        qq(rt,a);
        int tmp = a-ans;
        ans = 2000005;
        hj(rt,a);
        tmp = tmp<(ans-a)?tmp:(ans-a);
        as+=tmp;
        insert(rt,a);
    }
    printf("%d\n",as);
    return 0;
}

 

转载于:https://www.cnblogs.com/LiGuanlin1124/p/9593960.html

内容概要:本文介绍了一个基于冠豪猪优化算法(CPO)的无人机三维路径规划项目,利用Python实现了在复杂三维环境中为无人机规划安全、高效、低能耗飞行路径的完整解决方案。项目涵盖空间环境建模、无人机动力学约束、路径编码、多目标代价函数设计以及CPO算法的核心实现。通过体素网格建模、动态障碍物处理、路径平滑技术和多约束融合机制,系统能够在高维、密集障碍环境下快速搜索出满足飞行可行性、安全性与能效最优的路径,并支持在线重规划以适应动态环境变化。文中还提供了关键模块的代码示例,包括环境建模、路径评估和CPO优化流程。; 适合人群:具备一定Python编程基础和优化算法基础知识,从事无人机、智能机器人、路径规划或智能优化算法研究的相关科研人员与工程技术人员,尤其适合研究生及有一定工作经验的研发工程师。; 使用场景及目标:①应用于复杂三维环境下的无人机自主导航与避障;②研究智能优化算法(如CPO)在路径规划中的实际部署与性能优化;③实现多目标(路径最短、能耗最低、安全性最高)耦合条件下的工程化路径求解;④构建可扩展的智能无人系统决策框架。; 阅读建议:建议结合文中模型架构与代码示例进行实践运行,重点关注目标函数设计、CPO算法改进策略与约束处理机制,宜在仿真环境中测试不同场景以深入理解算法行为与系统鲁棒性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值