treap入门题。。

参考http://blog.csdn.net/u013480600/article/details/24379341

POJ 3481 Double Queue(Treap)

http://poj.org/problem?id=3481

题意:

    每个顾客有个编号和优先级,银行每次可以添加顾客的要求进队列,且保证队列中当前任意顾客的编号和优先级都不同.银行可以执行先服务最大优先级的顾客或者先服务最小优先级的顾客操作.对于每个服务,输出顾客的编号.

分析:

    直接构建Treap,插入节点的v值(顾客优先级)和节点的r值(随机函数rand获得)以及节点信息info(顾客编号),然后对于每个操作,先find找到最大v值的节点信息info,然后在delete即可.

———-


POJ 2985 The k-th LargestGroup(Treap+并查集)

http://poj.org/problem?id=2985

题意:

    有N只猫,开始每只猫都是一个小组,下面要执行M个操作,操作0 i j 是把i猫和j猫所属的小组合并,操作1 k 是问你当前第k大的小组大小是多少. 且k<=当前的最大组数.

分析:

    用并查集维护每只猫所属的集合,且维护集合中的节点数.

    然后假设集合S1和集合S2合并,就在Treap中删除V=|S1|的节点并删除V=|S2|的节点.并插入V=|S1|+|S2|的节点.(注意如果|S1|==1,不用删除,因为Treap只保存了合并之后的组大小)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值