Splay模板

本文详细介绍了如何对n+e代码进行修改,并通过使用内部定义的变量和函数实现代码优化。具体包括了定义最大可能值、初始化数组以及旋转、旋转重排和散开操作的实现。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

改自n+e的代码

 1 #define mx 100010
 2 int f[mx], c[mx][2], s[mx];
 3 inline void up (int x)
 4 {
 5     s[x] = s[c[x][0]] + s[c[x][1]] + 1;
 6 }
 7 inline int rotate (int i)
 8 {
 9     int fa = f[i], d = c[fa][1] == i;
10     f[i] = f[fa], fa > 0 ? c[f[fa]][c[f[fa]][1] == fa] = i : 0;
11     (c[fa][d] = c[i][!d]) ? f[c[i][!d]] = fa : 0;
12     up (c[f[fa] = i][!d] = fa);
13     return i;
14 }
15 inline void splay (int i)
16 {
17     for (int fa = f[i]; fa; fa = f[rotate (i)])
18         f[fa] ? rotate (c[fa][1] == i ^ c[f[fa]][1] == fa ? i : fa): 0;
19     up (i);
20 }

 

转载于:https://www.cnblogs.com/lightning34/p/4314320.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值