----数据结构----
笑面蘑菇
这个作者很懒,什么都没留下…
展开
-
[bzoj1528/POI2005]sam-Toy Cars---贪心+堆
DescriptionJasio 是一个三岁的小男孩,他最喜欢玩玩具了,他有n 个不同的玩具,它们都被放在了很高的架子上所以Jasio 拿不到它们. 为了让他的房间有足够的空间,在任何时刻地板上都不会有超过k 个玩具. Jasio 在地板上玩玩具. Jasio’的妈妈则在房间里陪他的儿子. 当Jasio 想玩地板上的其他玩具时,他会自己去拿,如果他想玩的玩具在架子上,他的妈妈则会帮他去拿,当她...原创 2017-09-21 15:37:25 · 312 阅读 · 0 评论 -
[SCOI2011]棘手的操作---左偏树合并与删除
解析Part0Part_0Part0:吐槽我错了,这种毒瘤题真的不适合我这种退役狗表示被负数坑死了Part1Part_1Part1:思路开两个左偏树:H1H_1H1维护NNN个节点,H2H_2H2维护H1H_1H1堆顶元素UUU:H1H_1H1直接连边,H2H_2H2删去一个点 (先判断是否在同一堆中)A1A_1A1:H1H_1H1—将xxx点取出来,加上vvv后...原创 2019-08-13 20:43:48 · 328 阅读 · 0 评论 -
[洛谷 P3377]【模板】左偏树(可并堆)
解析论文:左偏树的特点及其应用0. 吐槽怀疑这题是并查集,,,找根有点烦以前一直觉得很厉害的样纸,其实还是可以接受的(别和我说证明,不听)PS:已退役,过来划水1. 笔记核心:key(堆的性质), dis(左偏性质)关键操作:合并;删除左偏性质:保证 dis(lch)≥dis(rch)dis(lch) \geq dis(rch)dis(lch)≥dis(rch),其中dis(p)...原创 2019-08-08 20:31:52 · 260 阅读 · 0 评论 -
[笔记]树状数组杂谈
基本操作lowbit(x):不想解释,找度娘inline int lowbit(int x){ return x&(-x);}updata(x,y):修改第x个点{注意当x==0时会TLE }inline void updata(int x,int y){ for(;x<=n;x+=lowbit(x)) b[x]+=y;}getsum(x):获取[1原创 2017-09-14 21:26:41 · 225 阅读 · 0 评论 -
【洛谷 P2042】 [NOI2005]维护数列 --- Splay
题目描述请写一个程序,要求维护一个数列,支持以下 6 种操作:(请注意,格式栏 中的下划线‘ _ ’表示实际输入文件中的空格) 输入格式: 输入文件的第 1 行包含两个数 N 和 M,N 表示初始时数列中数的个数,M 表示要进行的操作数目。 第 2 行包含 N 个数字,描述初始时的数列。 以下 M 行,每行一条命令,格式参见问题描述中的表格输出格式: 对于输入数据中的 GET-S...原创 2018-02-28 11:23:19 · 236 阅读 · 0 评论 -
【洛谷P2286】[HNOI2004]宠物收养场 --- Splay
题目描述凡凡开了一间宠物收养场。收养场提供两种服务:收养被主人遗弃的宠物和让新的主人领养这些宠物。 每个领养者都希望领养到自己满意的宠物,凡凡根据领养者的要求通过他自己发明的一个特殊的公式,得出该领养者希望领养的宠物的特点值a(a是一个正整数,a<2^31),而他也给每个处在收养场的宠物一个特点值。这样他就能够很方便的处理整个领养宠物的过程了,宠物收养场总是会有两种情况发生:被遗弃的宠物过多或者是原创 2018-02-28 10:48:55 · 165 阅读 · 0 评论 -
【洛谷 P1486】 [NOI2004]郁闷的出纳员 --- Splay
传送门题目简述维护一个数列,同时约定一个下界,当一个元素低于该下界时,将其删除。统计最终删去的数的个数 有以下操作: 1. 增加一个元素(若该元素低于下界,则无视该操作) 2. 将每一个元素加上一个数 3. 将每一个元素减去一个数 4. 查询第k大的数分析 直接建树感觉是不可能的(整体操作绝对会Tle),因此,考虑从相对关系上对原数列进行处理。 既然是以下界(k)来判断,那么对于整原创 2018-02-28 10:32:08 · 204 阅读 · 0 评论 -
【洛谷 P3391】【模板】文艺平衡树 --- 区间翻转(splay)
传送门题目描述您需要写一种数据结构(可参考题目标题),来维护一个有序数列,其中需要提供以下操作:翻转一个区间,例如原有序序列是5 4 3 2 1,翻转区间是[2,4]的话,结果是5 2 3 4 1分析按数列的顺序建立一颗Splay 对此,既可以直接一个个地插入,又可以用类似线段树的方法,直接递归构建一颗比较平衡的Splay 对于区间的翻转操作,可以参考线段树的lazy-tag。 若要翻转区原创 2018-02-28 09:38:48 · 241 阅读 · 0 评论 -
【洛谷 P3369】 【模板】普通平衡树 --- Splay
传送门题目描述您需要写一种数据结构(可参考题目标题),来维护一些数,其中需要提供以下操作:插入x数删除x数(若有多个相同的数,因只删除一个)查询x数的排名(排名定义为比当前数小的数的个数+1。若有多个相同的数,因输出最小的排名)查询排名为x的数求x的前驱(前驱定义为小于x,且最大的数)求x的后继(后继定义为大于x,且最小的数)分析就当作模板吧。 1. 注意updata的位置【 位置不原创 2018-02-28 09:14:29 · 234 阅读 · 0 评论 -
[洛谷 P2234] [HNOI2002] 营业额统计 --- Splay
题目描述Tiger最近被公司升任为营业部经理,他上任后接受公司交给的第一项任务便是统计并分析公司成立以来的营业情况。Tiger拿出了公司的账本,账本上记录了公司成立以来每天的营业额。分析营业情况是一项相当复杂的工作。由于节假日,大减价或者是其他情况的时候,营业额会出现一定的波动,当然一定的波动是能够接受的,但是在某些时候营业额突变得很高或是很低,这就证明公司此时的经营状况出现了问题。经济管理学上定义原创 2018-02-28 08:53:49 · 151 阅读 · 0 评论 -
并查集的优化---路径压缩与启发式合并
并查集的优化分为两类:一种是 优化查找的路径压缩,一种是启发式合并(按集合大小合并与按秩(高)合并)路径压缩a.描述:如果查找的总路径过长,尤其是一条链的情况下,那么朴素的查找可能会超时。于是,每次在查找完根节点后,可以将查找路径上的节点直接指向根节点。 b.缺点:在一定程度上破坏了树的结构,也不便于记录其他的附加信息,如有特殊要求,请慎用(迫不得已,可进行特殊处理来维护)...原创 2017-08-15 11:15:33 · 1740 阅读 · 0 评论 -
[洛谷 P1090]合并果子 --- 手打二叉堆
题目描述在一个果园里,多多已经将所有的果子打了下来,而且按果子的不同种类分成了不同的堆。多多决定把所有的果子合成一堆。每一次合并,多多可以把两堆果子合并到一起,消耗的体力等于两堆果子的重量之和。可以看出,所有的果子经过n-1次合并之后,就只剩下一堆了。多多在合并果子时总共消耗的体力等于每次合并所耗体力之和。因为还要花大力气把这些果子搬回家,所以多多在合并果子时要尽可能地节省体力。假定每...原创 2017-09-09 09:24:17 · 462 阅读 · 0 评论 -
[洛谷 3378] 堆 模板
题目描述如题,初始小根堆为空,我们需要支持以下3种操作:操作1: 1 x 表示将x插入到堆中操作2: 2 输出该小根堆内的最小数操作3: 3 删除该小根堆内的最小数 输入输出格式 输入格式:第一行包含一个整数N,表示操作的个数接下来N行,每行包含1个或2个正整数,表示三种操作,格式如下:操作1: 1 x操作2: 2操作3: 3输出格式:包含若干行正整...原创 2017-09-09 09:45:26 · 303 阅读 · 0 评论 -
[caioj 树状数组2(破坏公路)]---树状数组
题目描述:在太平洋中心有一个圆形小岛,沿着小岛的海岸线分布着n个小镇,编号分别为1,2,3~~n;小镇i-1、小镇i、小镇i+1是相邻的(当然小镇n与小镇1相邻)。相邻小镇之间存在一条公路,公路也有编号,公路i连接小镇i和小镇i+1,公路n连接小镇n和小镇1.现在对小岛有m个操作,操作有两种: 询问操作:1 x y 代表小镇x到小镇y是否联通,联通输出1,否则输出0 修改操作:0 x ...原创 2017-09-13 09:31:18 · 760 阅读 · 2 评论 -
并查集深化---删点操作 {仅记录方法,暂未找到例题}
问题:由于并查集是树型结构且有路径压缩的操作,所以无法直接删除节点,再维护树. 解决:将原节点设为虚点,并新建一个点,用num[]把原来的点映射到这个新点上,以后的操作都是对这个新点进行操作 {使用节点x时,将x改为num[x]}...原创 2017-09-16 08:34:43 · 247 阅读 · 0 评论 -
[caioj 1094] 并查集3(校园白社会)---带权并查集
题目描述校园内有很多白社会团伙,他们专做好事。经过长期的卧底,学校有n个人,任何两个认识的人不是朋友就是敌人,而且满足:①我朋友的朋友是我的朋友;②我敌人的敌人是我的朋友。所有是朋友的人组成一个团伙。现在拥有关于这n个人的m条信息(即某两个人是朋友,或某两个人是敌人),请你计算出这个城市最多可能有多少个白社会团伙。 数据范围:2≤N≤2000,1≤M≤5000。 输入数据 第一行包...原创 2017-09-16 10:23:53 · 495 阅读 · 0 评论 -
[JLOI2015]城池攻占--- 左偏树 + lazy-tag
解析Part0Part_0Part0:吐槽还是欠练啊,上来就是个大根堆直接TTT飞。PS:高三学科狗,暑假来划水part1part_1part1:思路将骑士看做堆的元素,树上每个节点看做一个(小根)堆。初始化后,从叶子出发,一路向上模拟。对于节点PPP,先将其孩子的堆与之合并,然后去掉牺牲的骑士并计入答案,接着更新活着的其数值(打标记);标记: lazy1lazy1lazy1...原创 2019-08-09 20:47:25 · 233 阅读 · 0 评论