牛客 13822 Keep In Line(枚举与暴力、Python)
同個人網站 https://www.serendipper-x.cn/,歡迎訪問 !
鏈接:https://ac.nowcoder.com/acm/problem/13822
來源:牛客網
時間限制:C/C++ 1秒,其他語言2秒
空間限制:C/C++ 262144K,其他語言524288K
64bit IO Format: %lld
題目描述
又到飯點了,SK同學靠著慣性走到了食堂,但長長的隊伍頓時讓他失去了食欲。突然,他注意到某個窗口前的隊伍里明顯存在插隊的現象,于是他默默記錄下了同學們進隊和出隊的變化。
對于進隊,SK同學只知道隊伍里多了一個人,并不知道新來的人是老老實實站到了隊尾還是插到了隊伍里的某個位置;對于出隊,SK同學能確定是隊伍里站在最前面的人出隊了。
初始時隊伍為空,給出n條隊伍進出的信息,保證已經出隊的同學不會再入隊,并且最終隊伍也為空,現在SK同學想知道有多少不插隊的好同學。
輸入描述:
第一行是一個正整數T(≤ 5),表示測試數據的組數, 對于每組測試數據, 第一行是一個整數n(1≤ n ≤ 100000),表示這個隊伍進出的信息數, 接下來n行,每行是兩個字符串Opt Name,其中Opt為"in"代表進隊,"out"代表出隊,Name為進隊或出隊的人的名字, 所有信息按照時間順序給出,名字由英文字母和阿拉伯數字組成,長度不超過10,保證每個人的名字各不相同。
輸出描述:
對于每組測試數據,輸出一行,包含一個整數,表示不插隊的人數。
示例1輸入 1 6 in quailty in hwq1352249 out hwq1352249 in zhuaiballl out quailty out zhuaiballl輸出 2 首先建一個隊列,里面按照入隊順序存放字符串。然后等讀入出隊信息的時候,如果出隊是正常出隊,ans++,就直接刪除隊首元素,如果不是正常出隊,并利用map標記此字符串為1,遇到隊首元素標記為1的直接出隊。最后輸出ans。 T = int(input())for i in range(T):n = int(input())queue = []jumpers = {}ans = 0for j in range(n):s = input().split(" ")if s[0] == 'in':queue.append(s[1])else:while queue[0] in jumpers:del queue[0]if queue[0] != s[1]:jumpers[s[1]] = 1else:del queue[0]ans += 1print(ans)總結
以上是生活随笔為你收集整理的牛客 13822 Keep In Line(枚举与暴力、Python)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 计算机网络(二十四)-路由算法及路由协议
- 下一篇: 数据结构和算法——栈、队列、堆