会员专享
请先
登录,登录后可使用今日免费解锁;
开通会员后可解锁完整内容。
解题思路
本题是双队列模拟:维护缓冲区 buffer(待移入发送区)与发送区 send_q(按进入发送区的先后顺序排队),并用集合 in_buffer 记录当前缓冲区里有哪些编号,以 O(1) 判断 RECEIVE 是否重复。
核心操作 flush:当 SEND/QUERY 需要访问发送区但发送区为空、缓冲区非空时,把缓冲区全部按 FIFO 依次移入发送区,并从 in_buffer 中删除对应编号。
逐条处理指令:
- RECEIVE x:仅当 x∈in_buffer 时失败输出 −1;否则入队缓冲区并输出 x。已在发送区、不在缓冲区的编号可以再次接收(易错点)。