CLZ 的银行普通队列(队列)
题目描述输入描述输出描述输入输出样例
示例1 代码演示 小邋遢的衣橱(栈)
题目描述输入描述输出描述输入输出样例
示例1示例2 代码演示 练一练(排序)
题目描述输入描述输出描述输入输出样例
示例1 代码演示
CLZ 的银行普通队列(队列) 题目描述CLZ 银行只有两个接待窗口, V I P VIP VIP 窗口和普通窗口, V I P VIP VIP 用户进入 V I P VIP VIP 窗口排队,剩下的进入普通窗口排队。现有 M M M 次操作,操作有四种类型,如下:
IN name V:表示一名叫 name 的用户到 V I P VIP VIP 窗口排队OUT V:表示 V I P VIP VIP 窗口队头的用户离开排队IN name N:表示一名叫 name 的用户到普通窗口排队OUT N:表示普通窗口队头的用户离开排队
求 M M M 次操作结束后 V I P VIP VIP 窗口队列和普通窗口队列中的姓名。
输入描述第一行是一个整数
M
(
1
≤
M
≤
1000
)
M(1leq M leq 1000)
M(1≤M≤1000),表示一共有
M
M
M 次操作。
第二行到第
M
+
1
M+1
M+1 行输入操作,格式如下:
IN name VOUT VIN name NOUT N 输出描述
输出 M M M 次操作后 V I P VIP VIP 窗口队列和普通窗口队列中的姓名(从头到尾),先输出 V I P VIP VIP 窗口队列后输出普通窗口队列。
输入输出样例 示例1输入
5 IN xiaoming N IN Adel V IN laozhao N OUT N IN CLZ V
输出
Adel CLZ laozhao代码演示
主要使用python中的deque模块,q_N.append从队尾加元素,q_N.popleft从队头加元素
from collections import deque
m = int(input())
# 创建两个队,VIP和普通窗口
q_V = deque()
q_N = deque()
l0 = []
for i in range(m):
l1 = list(map(str, input().split()))
if len(l1) > 2: # 输入大于2,证明是进队
operation, name, user_type = l1[0], l1[1], l1[2]
if operation == 'IN':
if user_type == 'N': # 判断用户类型
q_N.append(name)
else:
q_V.append(name)
else: # 出队操作
operation, user_type = l1[0], l1[1]
if operation == 'OUT':
if user_type == 'N':
user_name = q_N.popleft()
else:
user_name = q_V.popleft()
for name in q_V:
print(name)
for name in q_N:
print(name)
小邋遢的衣橱(栈)
题目描述
小邋遢 M S . J i n l i n MS.Jinlin MS.Jinlin是个爱打扮的公主,他有很多晚礼服如 “LALA” “NIHAOMA” “WOBUHAO” “NIHAOBUHAO” 等众多衣服,可是由于衣服太多他要把它们装进箱子,但是作为公主,肯定是会突发奇想觉得哪件衣服好看,就把他拿了出来,当然那件衣服上面的衣服也被拿出来了,而且会弄乱了,小邋遢在经过几次的叠衣服和取衣服后,他想知道箱子里最上面的衣服是哪一件,如果箱子为空的话,就告诉她 Empty ,如果有多件一样的衣服,肯定是取走最上面的哪一件啦。
输入描述第 1 1 1 行,输入 N N N,代表共计进行了几次操作。
第
2
2
2 行至第
N
+
1
N+1
N+1 行,进行 in out 操作(in 为 放入衣服,out 为 取出衣服)
格式如下:
in name1out name2 输出描述
输出 N N N 次操作结束后箱子最上面的衣服名字,若箱子为空,输出 Empty。
输入输出样例 示例1输入
6 in AMDYES in INTELNO in USBAD in CNYES out INTELNO in MDICN
输出
MDICN示例2
输入
5 in AMDYES in INTELNO in USBAD in CNYES out AMDYES
输出
Empty代码演示
stack = []
M = int(input())
for i in range(M):
operation, close_name = map(str, input().split())
if operation == 'in':
stack.append(close_name)
else:
if stack[-1] == close_name:
stack.pop()
else:
while True:
if stack[-1] == close_name:
stack.pop()
break
else:
stack.pop()
if len(stack) == 0:
print('Empty')
else:
print(stack[-1])
练一练(排序)
题目描述
给定一个长度为 N N N 的数组 A A A,请你先从小到大输出它的每个元素,再从大到小输出它的每个元素。
输入描述第一行包含一个整数 N N N。
第二行包含
N
N
N 个整数
a
1
,
.
.
.
,
a
n
a_1,...,a_n
a1,...,an ,表示数组
A
A
A 的元素。
1
≤
N
≤
5
×
1
0
5
1leq Nleq 5times10^5
1≤N≤5×105 ,
−
1
0
9
≤
a
i
≤
1
0
9
-10^9leq a_i leq 10^9
−109≤ai≤109。
输出共两行,每行包含 N N N 个整数,表示答案。
输入输出样例 示例1输入
5 1 3 2 6 5
输出
1 2 3 5 6 6 5 3 2 1代码演示
python中可以使用sorted函数实现排序
a = int(input())
b = list(map(int, input().split()))
b1 = sorted(b) # 升序
b2 = sorted(b, reverse=True) # 降序
print(' '.join(list(map(str, b1))))
print(' '.join(list(map(str, b2))))



