HNOI2002 营业额统计(Splay Tree)

CycloneDDS(C++版本)开源代码在Linux(X86平台)系统上编译生成可执行文件的详细步骤 cyclonedds里面已经有现成的实例供我们参考,在根目录下的example目录下面,我们打开此目录,此目录下有CMakeLists.txt文件以及一些其他的文档,我们需要在此目录(example目录)下编译构建出。我们可以看到cyclonedds-cxx-master包下的example目录下有很多文件,包括CMakeLists.txt等,其中我们要构建的可执行文件所需要的源文件等就在。此过程会稍微慢一点。之后会报错,如下:(图片中是c版本出现的问题截图,不影响,c++也是这个影响,问题是一样的) 阅读详情

题目:http://www.lydsy.com/JudgeOnline/problem.php?id=1588

题意:

Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。
Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义了一种最小波动值来衡量这种情况:
当最小波动值越大时,就说明营业情况越不稳定。
而分析整个公司的从成立到现在营业情况是否稳定,只需要把每一天的最小波动值加起来就可以了。你的任务就是编写一个程序帮助Tiger来计算这一个值。
第一天的最小波动值为第一天的营业额。


思路:

如果使用普通方法时间复杂度便是O(n2),对于Splay树而言,每次插入后,插入节点都会被调整带根节点,而且满足中序遍历是个有序集合,类似于二叉搜索树。所以每次插入后,我们只需要查找根节点左子树中的最大值和右子树中的最小值即可,时间复杂度O(nlogn)。
感觉这题输入怪怪的- -

参考:

算法合集之《伸展树的基本操作与应用》


#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
typedef long long ll;
const int INF = 0x3f3f3f3f;

const int maxn = 1000010;
int pre[maxn],key[maxn],son[maxn][2];
int root,tot;

void link(int x,int y,int k)//将x连到y的k儿子上 0左1右
{
    pre[x]=y ;
    son[y][k]=x ;
}
void rotat(int x,int k)        //旋转
{
    int y = pre[x];
    link(x,pre[y],son[pre[y]][1] == y);
    link(son[x][!k],y,k);
    link(y,x,!k);
}

void newnode(int pr,int &x,int a)     //新建
{
    x = ++tot;
    pre[x] = pr;
    key[x] = a;
    son[x][0] = son[x][1] = 0;
}
void splay(int x,int to)
{
    while(pre[x] != to)
    {
        int y = pre[x];
        int sx = (son[y][1] == x),sy = (son[pre[y]][1] == y); //判断形状
        if(pre[y] == to)   //父节点是跟节点
            rotat(x,sx);
        else
        {
            if(sx == sy)   //zig-zig || zag-zag
                rotat(y,sx);
            else           //zig-zag || zag-zig
                rotat(x,sx);
            rotat(x,sy);
        }
    }
    if(!to)
        root = x;
}

void Insert(int t)
{
    int x = root;
    while(son[x][key[x]<t])         //找到适合t的位置
        x = son[x][key[x]<t];
    newnode(x,son[x][key[x]<t],t);
    splay(tot,0);
}




int Get_max(int t)          //找出最大值
{
    while(son[t][1])
        t = son[t][1];
    return t;
}

int Get_min(int t )         //找出最小值
{
    while(son[t][0])
        t = son[t][0];
    return t;
}


int main()
{
    int n,x;
    scanf("%d",&n);
    int ans = 0;
    for(int i = 1; i <= n; i++)
    {
        if(scanf("%d",&x)==EOF)x=0;
        Insert(x);
        if(i == 1)
            ans += x;
        else
        {
            int tt = 0x3f3f3f3f;
            if(son[root][0])
                tt = min(tt,x - key[Get_max(son[root][0])]);
            if(son[root][1])
                tt = min(tt,key[Get_min(son[root][1])] - x);
            ans += tt;

        }
    }
    printf("%d\n",ans);

    return 0;
}




YOLOv9原创自研:卷积魔改 | 一种新颖的风车形卷积(PConv)融合注意力机制,加强微弱小目标检测能力 为了进一步提升小目标检测能力,风车形卷积(PConv)融合注意力机制进一步提升小目标检测能力 阅读详情

相关推荐

多期DID实战指南:从CSDID原理到分组加权策略

本文深入解析多期DID(CSDID方法)在政策评估中的实战应用,从核心思想到分组加权策略全面讲解。通过电商扶贫等案例,详细演示如何正确处理分批实施政策的数据分析,包括分组拆解、子模块DID操作及加权平均选择,帮助研究者规避常见误区,提升政策评估的准确性。

weixin_26833503的博客 524

【HNOI2002】营业额统计 //SPLAY TREE

#include const int MAXN = 100001; const int INF = 1 << 30; struct NODE { int c[2], p, v, mul, sz; bool d; }T[MAXN]; int n

hqd_acm的专栏 1136

工作笔记05:imu、底盘车轮、单激光雷达外参校准(基于hdl_graph_slam建图和定位)

目录1. imu 校准1.1 IMU型号1.2 坐标定义1.2.1 大地坐标系(WGS84)1.2.2 当地地理坐标系(ENU)1.2.3 传感器坐标轴定义1.3 传感器校准2. 底盘车辆参数配置3. 单激光雷达校准参考文献 1. imu 校准 1.1 IMU型号 阅读IMU产品说明书,获得如下信息: Yesense YIS300 系列惯性传感系统 YIS300 系列包含: YIS300-U 惯性测量单元(IMU):输出经过校准的加速度和角速度值,同时也能够输出磁场强度信息。 YIS300-V 垂直参考系

穿林需独行的博客 4203

[HNOI2002]营业额统计 Splay tree

转载请注明出处,谢谢 http://blog.youkuaiyun.com/ACM_cxlove?viewmode=contents           by---cxlove SBT可解,貌似segment tree也可解。当作Splay练手,第一个Splay。 Splay每次把某个结点旋转到根结点。旋转分为三种。 如果父结点是根结点,那么只需要作一次左旋或者右旋即可,同SBT。 如果父结点P,

窝不是爱酱,喵~~~~ 5796

Windows11上CUDA 12.3配PyTorch踩坑记:一条官网命令救了我的GPU加速

本文详细介绍了在Windows 11上配置CUDA 12.3与PyTorch的完整指南,包括环境准备、安装要点、兼容性解决方案和性能验证。通过官方推荐的conda命令和实用技巧,帮助开发者解决常见问题,实现高效的GPU加速,提升深度学习开发效率。

weixin_42528974的博客 109

CHB-MIT波士顿儿童医院癫痫EEG脑电数据处理(一)

CHB-MIT癫痫EEG脑电数据处理CHB-MIT头皮脑电图数据介绍CHB-MIT头皮脑电图数据下载CHB-MIT头皮脑电图数据处理提取原始数据滤波(0.1~50hz)数据分块(时间窗口) CHB-MIT头皮脑电图数据介绍 该数据库收集自波士顿儿童医院,其中包括患有难治性癫痫发作的儿科患者的脑电图记录。停用抗癫痫药物后最多持续几天对受试者进行监测,以表征其癫痫发作并评估其对手术干预的候选资格。 从22位受试者中收集了23个病例的记录(5例男性,3至22岁; 17例女性,1.5至19岁)。 (案例chb21是

AI_DOG的博客 1万+

HNOI2002 营业额统计(splay tree)

【描述 Description】   营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,

zuihoudebingwen的专栏 1578

COMSOL 6.4安装全攻略:安装包获取、许可证配置与避坑指南

多物理场仿真是现代工程与科研中不可或缺的技术手段,其核心原理在于将电磁、结构、流体、传热等不同物理过程的耦合效应置于统一环境中求解,从而真实模拟复杂系统行为。这类仿真平台能大幅提升产品研发与设计验证效率,广泛应用于电子散热、声学分析、电力设备等领域。在部署最新版本仿真软件时,安装与许可证配置往往成为影响工作效率的关键环节。本文系统梳理COMSOL 6.4在Windows平台的安装全流程,涵盖安装包获取、系统依赖准备、许可证配置、常见报错排查等实用经验,帮助工程师与科研人员一次性完成环境搭建,把更多时间投入真

weixin_30000735的博客 1359

HNOI 2002 营业额统计 Splay Tree

1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 3822  Solved: 1184 [Submit][Status][Discuss] Description 营业额统计Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。Tiger拿出

天逸南爵的专栏 928

fluent二维叶型仿真_Fluent案例4【自然对流】

自然对流来了!!江苏的高校好多开学了,我啥时候才能开学另外,刚才看了何同学的Mac Pro深度体验视频,我好酸/(ㄒoㄒ)/~~好想拥有一台跑仿真那种sou~sou~sou~的机器。废话不多说了,进入正题!案例题目:一个矩形空腔内有500K恒温小球,矩形空腔充斥空气,边界条件绝热,模型尺寸如下,试模拟空腔内空气流动状态做出温度变化图。(尺寸大小懒得写了,在建模部分里有)操作平台:workbench...

weixin_39724469的博客 3670

【即插即用模块】Transformer篇 | MICCAI 2025 | ReLULA:Q/K双ReLU线性注意力,既轻又准!

本文介绍了一种基于线性注意力的多实例学习模块(Lin-MIL),适用于高分辨率视觉任务。该模块通过转置计算顺序和使用ReLU激活,将计算复杂度从O(n²d)降至O(nd²),同时提升特征判别性。核心创新包括Q/K双ReLU激活、可学习温度系数和数值稳定归一化。实验表明,该模块在轻量化视觉任务中优于传统线性注意力和Mamba架构。代码实现了模块化矩阵乘法,支持即插即用替换ViT自注意力层。该模块特别适合计算病理学等需要处理大量图像补丁的任务。

主要更新底层视觉(去噪、超分等)相关的科研内容,形式为【论文精读】+【论文复现】 140

1588: [HNOI2002]营业额统计 splay tree

//http://www.lydsy.com/JudgeOnline/problem.php?id=1588 //题意:每读入一个数,在前面输入的数中找到一个与该数相差最小的一个,把所有的差值绝对值加起来并输出 1 #include "bits/stdc++.h" 2 using namespace std; 3 const int maxn = 100010; ...

diufeng0879的博客 148

Chrome下载B站视频字幕的插件

本文主要介绍了Chrome下载B站视频字幕的插件,希望能对使用Chrome的同学们有所帮助。 文章目录 1. 问题描述 2. 解决方案

weixin_43178406的博客 3万+

[HNOI2002]营业额统计 Splay tree入门题

[HNOI2002]营业额统计 题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1588  [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 4128  Solved: 1305[Submit][Status][Discuss] Description ...

weixin_33920401的博客 143

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

[HNOI2002]营业额统计(Splay tree 入门)

[HNOI2002]营业额统计 Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候

小张的专栏 581

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

Luogu P2234营业额统计(Splay模板题)

P2234 [HNOI2002]营业额统计 AC Code #include<bits/stdc++.h> using namespace std; const int N=5e4+10; int root,tot; struct splay_tree { int ff,cnt,ch[2],val,size; }tr[N]; void update(int x) { tr[x].size=tr[tr[x].ch[0]].size+tr[tr[x].ch[1]].size+tr[

稚始稚终的博客 339

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

1588: [HNOI2002]营业额统计 (splay tree)

1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MBSubmit: 5783  Solved: 1859[Submit][Status] Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记...

weixin_34007886的博客 238

splay tree-hnoi2002 营业额统计

多组数据,读到EOF的时候X=0//贼坑 n个点,每插入一个点找到之前插入的点之中和它相差最小的点,ans+=两者之差。#include<stdio.h> #include<stdlib.h> #include<math.h> const int oo=100000010; int root,top,ans; struct node{ int l,r,f,w; }tree[100010];

struct_liao的博客 321

bzoj 1588 [HNOI2002]营业额统计 splay tree

http://www.lydsy.com/JudgeOnline/problem.php?id=1588 splay tree 中的一些操作的说明: sc函数: inline void sc(int y,int x,int p) { 如果p==0,则y是x的父亲,x是y的左儿子; 如果p==1,则y是x的父亲,x是y的右儿子; }rot函数: in...

weixin_34253126的博客 158

BZOJ 题目1588: [HNOI2002]营业额统计(Splay Tree 求前驱后继)

1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 10828  Solved: 3771 [Submit][Status][Discuss] Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tige

Jogging_Clown 981

BZOJ 1588: [HNOI2002]营业额统计

二次联通门 :BZOJ 1588: [HNOI2002]营业额统计 /* BZOJ 1588: [HNOI2002]营业额统计 splay 每次插入一个数 查询它的前驱与后继 有两点需要注意 1.大部分的数据有误。。即输入的数据不够。。 2.判断前驱后继...

weixin_30257433的博客 83
上一篇: hdu 5592 BestCoder Round #65(树状数组)
下一篇: Hdu 5595 GTW likes math
Tyuio28
博客等级 码龄11年 12粉丝 279原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值