Date:January 5th Title: 排队 题解

文章描述了一道编程题,涉及幼儿园小朋友排队的游戏模拟。操作包括添加小朋友、输出最前面的小朋友身高和按身高排序。解决方案利用了优先队列和普通队列的数据结构,以处理大规模数据的高效运算。在3号操作后,队列必须按身高升序排序。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

xjoi题解:P7782 排队

时间:1s 空间:256M

题目描述:

幼儿园里的小朋友在玩排队游戏,他们会根据老师的要求排队。

老师共进行 n 次操作,操作分为以下三种:

  • 1 x : 将一名身高为 x 的小朋友加入队尾

  • 2 : 输出队列最前面的小朋友的身高,保证进行该操作时队列非空

  • 3 : 将队列里的小朋友按照身高升序排序

输入格式:

第一行,包含一个正整数 n,表示操作次数。

加下来n行按照以下格式之一输入操作:

1 x

2

3

输出格式:

对应操作进行输出。

样例1输入:

9

1 1

1 3

1 2

3

2

2

1 0

3

2

样例1输出:

1

2

0

约定与解释:

对于100%的数据,1≤n≤2×105;0≤x≤109

样例1解释:

第1个操作后,队列为 [1]

第2个操作后,队列为 [1,3]

第3个操作后,队列为 [1,3,2]

第4个操作后,队列为 [1,2,3]

第5个操作后,队列为 [2,3]

第6个操作后,队列为 [3]

第7个操作后,队列为 [3,0]

第8个操作后,队列为 [0,3]

第9个操作后,队列为 [3]

分析:

这是一道数据结构题。因为1≤n≤2×105,所以我们只能用优先队列+队列去做(怕3号操作太多),但优先队列插入进去就直接变得有序了,题意是说只有在3号操作时才变得有序,所以说它不要求随时都是有序的,但在3号操作后必须变得有序了。所以我们用优先队列+队列来进行优化,从而实现对大规模数据的运算。

代码:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值