HNOI 2002 营业额统计(Splay入门)

BZOJ-1588: [HNOI2002]营业额统计 (set查找前驱后继 splay练习题) splay一道模板题,联系简单的插入删除寻找前驱后继的操作。题意:4e4天,每天有一个营业额,找到当天之前营业额与当天营业额差值最小的一天,然后累加这个差值。 阅读详情

第一次写splay。。

首先你必须要明确一些事情 -> 坚信splay不难, 好吧, 下面推荐一篇博客, 作为入门, 之后再做一下这道题(其实并不需要splay), 就可以开始splay之路了

这道题没什么好解释, 裸题, 中文的, 不需要解释了

参考了cxlove的博客

code->

#include <bits/stdc++.h>
using namespace std;

#define N 100005
#define oo 1<<30
#define rep(i, s, t) for(int i = s; i <= t; ++i)

int n, tot, root, key[N];

struct Splay{
	int fa[N], ch[N][2];

	void newnode(int &r, int father, int w) {
		r = ++tot;
		fa[r] = father;
		key[r] = w;
		ch[r][0] = 0;
		ch[r][1] = 0;
	}

	void rotate(int x, int kind) {
		int y = fa[x];

		ch[y][!kind] = ch[x][kind]; fa[ch[y][!kind]] = y;

		if(fa[y]) ch[fa[y]][ch[fa[y]][1]==y] = x;

		fa[x] = fa[y]; fa[y] = x; ch[x][kind] = y;
	}

	void splay(int u) {
		while(fa[u]) {
			if(!fa[fa[u]]) rotate(u, ch[fa[u]][0] == u);

			else {
				int v = fa[u];
				int kind = ch[fa[v]][0]==v;

				if(ch[v][kind] == u) rotate(u, !kind), rotate(u, kind);
				else rotate(v, kind), rotate(u, kind);
			}
		}
		root = u;
	}
	int insert(int k) {
		int u = root;
		if(key[root] ^ k) {
			while(ch[u][key[u]<k]) {
				if(key[u] == k) {
					//cout<<k<<"$"<<endl;
					splay(u);
					return 0;
				}
				u = ch[u][key[u]<k];
			}
			newnode(ch[u][key[u]<k], u, k);
			splay(ch[u][key[u]<k]);
			return 1;
		}
		return 0;
	}

	int geta(int x) {
		int t = ch[x][0];
		if(!t) return oo;
		while(ch[t][1]) t = ch[t][1];
		return abs(key[t] - key[x]);
	}
	int getb(int x) {
		int t = ch[x][1];
		if(!t) return oo;
		while(ch[t][0]) t = ch[t][0];
		return abs(key[t] - key[x]);
	}
}sp;

int main() {
#ifndef ONLINE_JUDGE
	freopen("data.in", "r", stdin);
	freopen("result.out", "w", stdout);
#endif
	int x, res = 0;
	scanf("%d", &n);
	scanf("%d", &x);
	sp.newnode(root, 0, x);
	res += x;
	rep(i, 2, n) {
		scanf("%d", &x);
		if(sp.insert(x)) {
			res += min(sp.geta(root), sp.getb(root));
		//	cout<<res<<endl;
		}
	}
	cout<<res<<endl;
	return 0;
}


关于solidworks无法获得下列许可SOLIDWORKS Standard的解决方法 在使用solid works的时候,出现无法获得下列许可SOLIDWORKS Standard,刚开始还以为软件出了问题,经过一方折腾找到了解决方法。希望这个方法可以帮助到您 找到这个服务 问题到这里就已经得到了解决,但更大的问题是,要是每次遇见这种都要这么麻烦,岂不是很累?这里也提供一种方法。考虑到每个人的情况,下面说的可能有一点啰嗦。 !!!!!!注意那个在此期间之后重新启动服... 阅读详情

相关推荐

从零到一:树莓派OpenWrt squashfs固件扩容背后的文件系统魔法

本文深入解析树莓派OpenWrt系统中squashfs固件的扩容原理与操作。通过理解squashfs与overlayfs的协同机制,掌握分区调整和文件系统扩容技巧,解决存储空间限制问题,提升设备可用性。

hadoop5ranger的博客 1037

tyvj p1036 统计数字

qsort

GadyPu的专栏 522

ESP32蓝牙配网实战:微信小程序中的blufi协议实现与优化

本文详细介绍了在微信小程序中实现ESP32蓝牙配网的实战经验,重点解析了blufi协议的应用与优化。内容涵盖从开发环境配置、协议帧格式解析,到小程序端蓝牙通信、数据转换的核心步骤,并提供了配网状态机设计、错误处理及性能调优等进阶方案,旨在帮助开发者高效、稳定地完成物联网设备配网功能开发。

weixin_29159613的博客 456

hnoi 2002 营业额统计(splay入门题)

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

WEYuLi的专栏 787

QMT vs Ptrade:量化交易新手如何根据需求选择券商系统(附实战案例)

本文对比了QMT和Ptrade两大券商量化交易系统的核心差异,帮助量化交易新手根据需求选择合适的平台。QMT适合技术面策略开发,执行效率高;Ptrade则提供全面的财务数据和复杂策略支持。通过实战案例,展示了如何结合两平台优势实现高效量化交易。

weixin_42683394的博客 527

Python实战:5分钟搞定N-CMAPSS航空发动机数据集解析(附完整代码)

本文提供了一份针对N-CMAPSS航空发动机数据集的快速解析实战指南。通过Python的h5py库,详细演示了如何读取HDF5文件结构、理解数据分类(如传感器、健康参数、场景描述符)并加载为Pandas DataFrame。文章还澄清了数据集中常见的变量数量疑惑,并给出了从数据加载到构建剩余使用寿命预测模型预处理流水线的完整代码,帮助工程师和研究人员高效入门航空发动机预测性维护分析。

weixin_29057065的博客 422

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

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

dezhen7015的博客 182

【YOLOv10改进[Backbone]】使用ADNet改进YOLOv10在噪声干扰下的目标检测效果(图像去噪)+ 含全部代码和详细修改方式 + 手撕结构图 + 全网首发

使用ADNet改进YOLOv10在噪声干扰下的目标检测效果(图像去噪)+ 含全部代码和详细修改方式 + 手撕结构图 + 全网首发 + 遥遥领先

静谧、淡雅 2857

HNOI 2002 营业额统计 入门Splay

题意:题意简单的说就是给一个数列,对于每一个数,用在它前面出现的数与它做差,找到对它来说最小的差,答案就是把每一个数的最小差相加。第一个数的最小差是它本身。 分析:这几天在练Splay(感觉自己太菜了),用splay来解决这个问题,维护一颗平衡树,然后依次插入,每次插入找到它的前驱和后继,得到每个数的贡献,最后相加算出答案。最最最简单的Splay应用,然而我还是调了很久的bug,不过没有照着板子

可以说非常弱鸡 273

图像紫边消除(depurple)

对图像紫边形成原因、消除方法进行了介绍。

沧海一升的博客 7564

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?

微信电脑版本不会自动下载图片吗?——没有找到解决方法。——只会默认下载doc等文件,图片不行,需要自己另存为——有什么办法解决吗?此外,用户还可以选择将接收到的图片、视频和文件保存到指定的文件夹中。‌用户可以在微信设置中调整这一设置。

qq_15963745的博客 5088

[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的博客 141

PD3.0详解 电源规则,全解!!!全解!!!

电源规则 大师匈今天谈一下PD3.0的电源规则,PD3.0标准标定的规则。 USB协议声称,为了世界和平世界环境,让大家用上统一标准的充电器,不用再为每一个用电设备都配一个专门的充电器,这些充电器各种各样的都有,所以有时候大师匈也很烦!!!那么为了维护世界和平,USB协议呢就制订了这个PD快充协议,还有它的规则,只要全世界都用PD,就解决了这个大问题。 在这里先了解一个关键字,PDP: Power Delivery Power PD电源的功率。 每个PD充电产品的功率要以0.5W的精度上报,比如大师匈做的P

大师匈的博客 1万+

[HNOI2002]营业额统计 二叉搜索树的简单入门 splay

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

乐观之奋斗者 572

android 蓝牙通讯demo

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

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

1588: [HNOI2002]营业额统计 splay 入门

splay tree 伸展树 推荐论文   伸展树的基本操作与应用  Description 营业额统计 Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。 Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波

MY Blog 543

Data-Structures-and-Algorithm-Analysis-in-Java.pdf

作者: Weiss, Mark A. 出版社: Addison Wesley Data Structures and Algorithm Analysis in Java is an “advanced algorithms” book that fits between traditional CS2 and Algorithms Analysis courses. In the old ACM Curriculum Guidelines, this course was known as CS7. This text is for readers who want to learn good programming and algorithm analysis skills simultaneously so that they can develop such programs with the maximum amo...

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

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

小张的专栏 581

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

BZOJ 1588: [HNOI2002]营业额统计 (Splay入门题目)

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

henuzxy 331

bzoj 1588: [HNOI2002]营业额统计(splay入门)

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1588 题解:这题如果用普通的bst的话是可以过时间差不多4s左右如果用splay的话是140ms。 由于splay可以有序的插入,各种操作都不会改变中序遍历的结果,而且splay每次可以将插入的位置通过旋转到根的位置,那么这题就可以通过寻找根节点的前驱最大值和后继最小值...

awow80285的博客 151

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

题目链接:http://www.lydsy.com/JudgeOnline/problem.php?id=1588 这道题貌似很多中做法,我先是用multiset交了一发,然后又写了一发splay。 multiset做法,这个其实就是二分了,只是用set来保持加入一个元素时保持有序 1 #include <set> 2 #include <map> ...

weixin_30580341的博客 98

Splay入门题+1588: [HNOI2002]营业额统计

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

龙崎的专栏 491

1588: [HNOI2002]营业额统计(Splay树入门)

题目的连接 今天开始学习splay树,如cxlove大神所说,开始主要追随别人的代码,然后写出适合自己的,学习的话可以参考kuangbin的这篇文章,及里面提及的论文 #include<cstdio> #include<algorithm> using namespace std; const int maxn=100005; const int inf=1<<28;int pre[maxn],k

qwesde 470

bzoj 1588 hnoi2002营业额统计 splay

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

wbysr 932

[HNOI2002]营业额统计 Splay tree

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

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

HNOI2002 营业额统计

题目思路:splay,用到了查找树内某结点的前驱,后继和插入操作。 #include #include #include #include #include #include #include #include #include #include #include using namespace std; #define inf 0x3f3f3f3f #define Max 40000 int

Wings_of_Liberty的专栏 722
上一篇: UVA-The Largest Clique 11324
下一篇: Manacher O(n) 回文字符串查找算法
__Galaxy
博客等级 码龄10年 8粉丝 33原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值