splay
文章平均质量分 83
CMTM4
ACM退役
展开
-
[HNOI2002]营业额统计
花了一天钻研了splay,然后发现splay没我想象的那么难……以前都是写SBT来着…… 但是splay的速度确实没那么快,但是真的挺好写的~ 我写的版本测了这题以后又用了一下别人的splay,发现通过这题大多数splay在750ms上下,我是688ms,说明还算是不错的啦~啦啦啦~ #include #include #include #include using name原创 2015-01-26 17:07:25 · 358 阅读 · 0 评论 -
【HNOI2004】宠物收养所 平衡树
其实就是查找前驱和后继的问题, 因为绝对值最小的情况,一定是前驱和后继和k的绝对值。 这里处理有一个小方法, 一开始在树中加入maxnum和minnum2个值。 树有2个节点,就为空树。这样就不会有不存在前驱和后继的情况了。 同时还用到一个技巧,flag。 flag=0和1. 如果读入的是0和1,和flag相同就插入,否则就删除。 如果树的节点数量为2,那么flag^=f原创 2015-02-12 21:23:18 · 432 阅读 · 0 评论 -
【NOI2004】郁闷的出纳员 平衡树
PS:SPLAY依然不能一次写对…… 总会写出毛病,真是醉醉醉醉醉…… 这题难点在于变动工资,我们只需要变动工资K,表示工资现在增加了K。 然后如果有员工进来,【并且进的来,初始工资比最低工资高】,那么我们就把这个员工的工资,减去K这个值,加入到平衡树中。 删人的的时候,只要查比【初始工资+工资变化量K】小的数字全删掉。 这里不需要一个一个删,大多数平衡树都会支持删整棵树的操作原创 2015-02-13 00:35:14 · 465 阅读 · 0 评论 -
POJ 2761 依然是平衡树
题目大意: 先给定一大堆数字,(下标从1开始!!! 我当从0了,WA掉了2次!) 然后给定区间[L, R]问[L,R]区间内,第K大的数字是谁。 先预先读取所有区间,把区间排序。 然后保证平衡树内只有区间内的元素…… 然后每次直接把区间内的元素问题解决掉……时间复杂度略高nlogn而且n特别大,跑了5秒多 2761 Accepted 41原创 2015-02-13 22:27:08 · 424 阅读 · 0 评论 -
POJ 3481 multimap / 平衡树 / splay
题目意思: 0 结束系统 1 K P 把一个叫K的客户,加入系统。他的优先级是P 2 输出最高优先级的客户名字, 同时删掉他 3 输出最低优先级的客户名字,同时删掉他 想法: 平衡树,找最大值最小值即可。 C++这次我试了试multimap,挺好玩的。实际上这题也应该没重复关键字吧~ iterator 迭代器的begin()肯定是最小值原创 2015-02-13 12:21:59 · 450 阅读 · 0 评论 -
[AHOI2006]文本编辑器editor BZOIJ 1269
题目意思没啥特点,意义明显,就是测试模板。 我的模板,真是烂爆炸了!!!!但是能用,勉强能用吧……不知道为啥这么慢,可能是我插入的时候偷懒采用一根链的方式插入的吧。(反正splay会自己调整……理论实践不会TLE才对啊~~~~) #include #include #include #include #include #include using namespace原创 2015-10-31 18:13:06 · 470 阅读 · 0 评论 -
HDU 3487 splay区间维护问题
题目意思: 给定一个1,2,3,4...n的序列 操作1: 把第L到R个元素切掉,然后插入新的序列第k个元素后面 操作2: 第L个,到第R个元素之间的所有元素进行倒序。 splay模板: 这里我自己做了自己的splay模板,太慢!勉强能用! #include #include #include #include #include u原创 2015-10-31 15:24:11 · 558 阅读 · 0 评论