【HNOI2002】【BZOJ 1588】营业额统计

【bzoj 1588】 [HNOI2002]营业额统计 双向链表 阅读详情

Description

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

Solution

一道Splay的例题,
每次直接把第一个比它小旋到根,判断 一下,再加入树中即可,

复杂度:O(nlog(n))

Code

#include<cstdio> 
#include<cstdlib> 
#include<algorithm>
#define fo(i,a,b) for(int i=a;i<=b;i++)
#define ch0 ch[0]
#define ch1 ch[1]
using namespace std;
const int N=100500,INF=214748340;
int read(int &n)
{
    char ch=' ';int q=0,w=1;
    for(;(ch!='-')&&((ch<'0')||(ch>'9'));ch=getchar());
    if(ch=='-')w=-1,ch=getchar();
    for(;ch>='0' && ch<='9';ch=getchar())q=q*10+ch-48;n=q*w;return n;
}
int n,ans,a0,root;
struct qqww
{
    int ch[2],fa,v,mi,ma;
    qqww():fa(N),v(INF),mi(INF),ma(-INF){}
}a[N+1];
void merge(int q){if(q)a[q].mi=min(a[q].v,min(a[a[q].ch0].mi,a[a[q].ch1].mi)),a[q].ma=max(a[q].v,max(a[a[q].ch0].ma,a[a[q].ch1].ma));}
void merge_up(int q){while(q!=N)merge(q),q=a[q].fa;}
int search(int q,int e)
{
    if(a[a[q].ch1].mi<=e)return search(a[q].ch1,e);
    if(a[q].v<=e)return q;
    return search(a[q].ch0,e);
}
bool KIND(int q){return a[a[q].fa].ch0==q;}
void rotate(int x)
{
    int y=a[x].fa,e=KIND(x);
    a[y].ch[!e]=a[x].ch[e];a[a[x].ch[e]].fa=y;
    a[x].ch[e]=y;
    a[a[x].fa=a[y].fa].ch[a[a[y].fa].ch1==y]=x;
    a[y].fa=x;
    merge(y),merge(x);
}
void Splay(int q,int T)
{
    while(a[q].fa!=T)
    {
        if(a[a[q].fa].fa!=T)
            if(KIND(q)==KIND(a[q].fa))rotate(a[q].fa);
                else rotate(q);
        rotate(q);
    }
    if(T==N)root=q;
}
void init(int e)
{
    int q;
    Splay(q=search(root,e),N);
    int t=a[root].ch1;
    a[root].ch1=a[t].fa=++a0;a[a0].fa=root;
    a[a0].ch0=N,a[a0].ch1=t;
    a[a0].v=e;
    merge_up(a0);
}
int main()
{
    int q,w;
    a[0].ch0=N;
    a[0].v=-INF;a[a[0].ch1=N-1].v=a[0].mi=INF;
    a[N-1].fa=0;a[N-1].ch0=a[N-1].ch1=N;
    read(n);
    fo(i,1,n)
    {
        read(q);init(q);
        rotate(a0);root=a0;
        if(i-1)ans+=min(abs(a[a[a0].ch0].ma-a[a0].v),abs(a[a[a0].ch1].mi-a[a0].v));
            else ans+=q;        
    }
    printf("%d\n",ans);
    return 0;
}
WSL 相关命令时遇到了 “无法从raw.githubusercontent.com提取分发列表、操作超时 核心问题:国内网络屏蔽raw.githubusercontent.com,导致WSL无法获取发行版列表;最优方案:优先用方案1(手动指定发行版安装),无需改配置,1分钟搞定;永久修复:用方案2(修改hosts),适合需要管理多个WSL发行版的场景;兜底方案:用方案3(手动下载安装包),适配所有网络环境。按以上步骤操作后,你不仅能正常安装WSL,等命令也能正常执行,后续可正常使用WSL搭配Docker Desktop(如切换WSL 2后端),无需再担心网络超时问题。 阅读详情

相关推荐

Ubuntu 上 1Panel 的安装与高效运维实践

本文详细介绍了在Ubuntu系统上安装和高效运维1Panel面板的完整实践指南。内容涵盖了一键安装、Docker容器可视化部署、计划任务自动化以及网站数据库管理等核心功能,并提供了安全加固、资源监控与数据备份等进阶技巧,旨在帮助用户快速搭建并管理一个强大易用的服务器环境。

weixin_29210759的博客 141

[HNOI2002]营业额统计

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

a5163273的博客 369

【UV打印机】PrintExp打印软件教程(六)-高级模式(马达)

输入高级模式密码进入高级模式高级模式界面有操作栏、控制栏、参数栏及参数界面操作栏名称功能说明文件加载数据从板卡加载参数保存将参数保存到主板退出退出高级模式固件导入固件导入配套版本下的固件配置*xpcfx导出固件导出当前使用的固件配置*xpcfx导入波形文件导入对应的波形文件*waf操作初始化系统继续初始化动作复位X轴复位回原点控制栏可进行小车运动、闪喷操作(此闪喷为点击进行闪喷,不受平台位置限制),无清洗功能。

Print World的专栏 3112

BZOJ 1588 [HNOI2002]营业额统计

treap的入门题,虽然在splay的论文里看到过这题。。。 遇到2个奇葩问题:1:BZOJ 上用srand(time(NULL))会RE 2:这题的数据不完整 1588: [HNOI2002]营业额统计 Time Limit: 5 Sec  Memory Limit: 162 MB Submit: 6820  Solved: 2250 [Submit][Status] Des

码代码的猿猿 1519

2026年CSP-J初赛真题及答案解析

2026年CSP-J初赛真题及题解

王老师青少年编程 1613

YOLOv11改进策略【模型轻量化】| 替换骨干网络 CVPR-2024 RepViT 轻量级的Vision Transformers架构

本文记录的是基于RepVit的YOLOv11轻量化改进方法研究。RepVit的网络结构借鉴ViT的设计理念,通过分离的token mixe和减少推理时的计算和内存成本,同时减少扩展比率并增加宽度,降低延迟,并通过来弥补参数大幅减少的问题,提高了准确性。本文在替换骨干网络中配置了原论文中的和五种模型,以满足不同的需求。

Limiiiing的博客 2973

bzoj1588[HNOI2002]营业额统计

好裸的题,好坑的数据= =详见讨论版 #include #include #include #include using namespace std; #define MAXN 500010 #define INF 0x7fffffff struct node{ int ch[2],f,v; }tr[MAXN]; int a,tmp,x1,x2,ans; int n,root,t

zz_ylolita 1143

Codex 自定义模型操作指南:CLI 与桌面客户端双端实操

检查版本 codex --version # 预期输出类似:codex-cli 0.133.0-alpha.1 # 如未安装 npm install -g @openai/codex假设你要接入DeepSeek,在# 临时设置(当前终端会话有效)export DEEPSEEK_API_KEY="sk-你的 DeepSeek API Key"# 永久设置(推荐,写入 shell 配置)

篮球界最会写bug的人;程序猿中打球最菜的人。 452

BZOJ 1588: [HNOI2002]营业额统计 (Treap/链表)

BZOJ 1588: [HNOI2002]营业额统计题目概述:依次给出n日的营业额,当日的营业额波动为和当日以前的营业额差值的绝对值,特别的,第一日的营业额波动为当日营业额,求n日的最小波动之和.题目分析:(刚学了Treap来练手……)解法一:既然是练习Treap,那就用Treap来做吧. 对于每一日,先求出它的前驱和后继,用与当前数相差小的更新答案. 注意处理没有前驱或者后继的情况.#incl

Continue 1186

【Dify】PPT生成工具应用

本文介绍了一款自动化PPT生成工具,通过智能接口将文本内容高效转化为结构化演示文档。该系统采用三阶段工作流(内容输入、HTTP请求上传、文件输出),无需复杂操作即可生成专业PPT。工具适用于教学课件、产品发布、企业培训等场景,能显著提升内容表达效率,特别适合初学者快速制作演示材料。文章详细说明了核心节点、应用场景及开发资源,为文本到PPT的自动化转换提供了实用解决方案。

Mr数据杨 1216

STM32 USB键盘实现指南

在STM32上实现键盘功能可以通过USB HID(人机接口设备)协议来实现,使STM32设备能被计算机识别为标准键盘。通过上述步骤,您可以在STM32上实现一个功能完整的USB键盘。关键点包括:正确配置USB HID设备实现键盘矩阵扫描处理按键事件并生成HID报告优化按键响应和消抖处理添加额外功能如宏键和LED反馈这个实现可以作为基础,进一步扩展为游戏键盘、宏键盘或特殊输入设备。

suny8的专栏 968

bzoj1588【HNOI2002】营业额统计

平衡树裸题

AaronPolaris 2548

基于Simulink的柔性关节人形机器人振动抑制控制仿真

本文完成了基于Simulink的柔性关节人形机器人振动抑制控制仿真,实现了:✅ 建立二质量柔性关节动力学模型✅ 设计加速度反馈主动阻尼控制器✅ 对比陷波滤波与状态反馈效果✅ 验证大幅运动下的快速振动衰减能力✅ 为高动态人形机器人操作(如击掌、搬运)提供平滑执行基础。

xiaoheshang_123的博客 128

bzoj 1588 //1588: [HNOI2002]营业额统计

bzoj 1588 //1588: [HNOI2002]营业额统计 //在线测评地址https://www.lydsy.com/JudgeOnline/problem.php?id=1588 //在线测评地址https://www.luogu.org/problem/P2234 更多题解,详见https://blog.youkuaiyun.com/mrcrack/article/details/9022...

mrcrack的博客 223

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

bzoj 1588 hnoi2002营业额统计 splay

今天下午加半个晚上终于对照着lkx的代码学会splay了。。明天巩固一下再写点题。。 话说lkx的代码真是凝练,看的就很享受,话说我学splay学了快三个小时 智商真是硬伤。。。 不管怎么说还是写出来了hnoi2002的营业额统计,明天写hnoi2004的题 下面是代码 #include #include #include #include #define MAX 35000+9 us

wbysr 932

jre9下载 jdk9

(Java SE Runtime Environment 9.0) 9.0u175 官方最新版 【x86|x64】

bzoj 1588 [HNOI2002]营业额统计 splay

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

kimnoic的专栏 392

BZOJ 1588 HNOI2002 营业额统计

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

161

BZOJ1588: [HNOI2002]营业额统计

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

Mrazer 737

【bzoj 1588】 [HNOI2002]营业额统计

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

yyx2000的博客 238

BZOJ 1588: [HNOI2002]营业额统计 双向链表

BZOJ 1588: [HNOI2002]营业额统计 Time Limit: 5 SecMemory Limit: 512 MBSubmit: 9619Solved: 3287 题目连接 http://www.lydsy.com/JudgeOnline/problem.php?id=1588 Description 营业额统计 Tiger最近被公司升任为营...

weixin_30955341的博客 69

【bzoj1588】:[HNOI2002]营业额统计

1588: [HNOI2002]营业额统计 Time Limit: 5 SecMemory Limit: 162 MB Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当...

diezhan1313的博客 170

BZOJ 1588: [HNOI2002]营业额统计

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

227

BZOJ1588[HNOI2002]营业额统计【CDQ分治 or Splay】

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

qq_43710979的博客 237
上一篇: 【JZOJ 4784】Map
下一篇: 【JZOJ 4798】天使的分裂
HOWARLI
博客等级 码龄11年 109粉丝 378原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值