读书人

一道算法题,该如何解决

发布时间: 2013-10-21 17:00:48 作者: rapoo

一道算法题
设计一种数据结构,支持插入和删除操作,其中每个元素有一个关键字和一个值,并根据关键字访问元素,对值可以进行加法运算(只能通过关键键字访问),而Partial_sum运算定义为:
Partial_sum(y):返回集合中值比y小的那些元素的和
对O(n)个运算的任意系列,最坏情况下的时间复杂度仍需保证O(nlogn)
[解决办法]
可以用Treap写个线段树来弄
[解决办法]
关键字部分用Hash映射到节点就可以,对值弄个线段树来维护前缀和应该就差不多了(相当于对值建个排序好的二叉树),每次根据关键字修改值的时候,先通过关键字找到对应的节点,然后就能知道对应的值,然后根据值从树中删除这个节点,换成新值后再放回树中,所以是Log(n)的。由于离散化不方便,所以弄个Treap来维护线段树。

引用:
Quote: 引用:

可以用Treap写个线段树来弄

求详细算法

读书人网 >软件架构设计

热点推荐