首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 软件管理 > 软件架构设计 >

一道算法题,该如何解决

2013-10-21 
一道算法题设计一种数据结构,支持插入和删除操作,其中每个元素有一个关键字和一个值,并根据关键字访问元素

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

引用:
Quote: 引用:

可以用Treap写个线段树来弄

求详细算法

热点排行