vijos 不差钱 sbt的运用

 

不差钱

Buchaqian.pas

描述:

同学们一起看了小品《不差钱》,LX神突发奇想,想刁难一下十八居士,他让十八居士模拟一下点菜的过程。

输入:

第一行为一个数price,表示价钱大于price的菜赵本山都不要。

以下几行表示点菜的过程,每行两个整数pn

p=1 表示在菜谱中添加一个价格为n的菜,这是第i1号命令,这个菜的编号就是i

p=2 表示菜谱中第n号菜已卖完(但不代表菜谱中没有了这种菜),

p=3 表示赵本山点第n贵的菜。

输入文件以0结束。

菜的价格0<n<=10^6

3种命令,

30%数据命令最多300次,

60%数据命令最多3000次,

100%数据命令最多100000次。

输出:

对于每个p=3

如果第n贵的菜价格高于price,则输出“Dui bu qi,Mei you.”。

如果第n贵的菜价格不高于price,且没有卖完,则输出“You.”然后输出价格m Yuan

如果已卖完,则输出“Mei you. Zhe ge ke yi you. Zhe ge zhen mei you!

分析:由于命令数最多有100000次,用桶、归并排序均会超时。可以用平衡二叉树来解决,我选择的是sbt。对于每一道菜,将价格作为关键字插入sbt中,用一个桶a记录某价格的菜有多少个(有些菜价格相同)。对于询问,用sbt可以在O(logn)时间复杂度内找到第k大数,然后按照题意进行对应的判断即可。

代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值