cf85d treap

此题正解应该是bst 出题人的blog:http://www.codeforces.com/blog/entry/2021

我看到有人有vector+二分查找过了的。如果二叉搜索树的深度在多一点,二分估计也难过啊

我的做法略微暴力,但是使用treap来维护的暴力

每个节点维护5个长度的和,那么根节点的sum5个值是由左右节点的5个值加上来的,由于只要求中间那个值和,所以我先加上左边的,那么右边的其实相当于我在往后面加,但是是求和,所以从左边的size开始的往后5位,那么对应下来就是左边的(s(s代表左边的节点个数)+i(i是右边各个元素小标)+1)%5,由于我的是从0开始的下标,所以要+1.那么最后所有的就可以对应和了.

查询的时候只要访问根节点的sum【2】即第三个节点的就好了。

有一点需要注意的是,由于treap会旋转,所以是采用赋值的形式而不能+=不然就会乱套了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值