此题正解应该是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会旋转,所以是采用赋值的形式而不能+=不然就会乱套了