Keep In Line(BNUOJ 队列 string,map应用)
来源:互联网 发布:进入国外网站软件 编辑:程序博客网 时间:2024/05/16 23:36
K. Keep In Line
Time Limit: 2000ms
Memory Limit: 262144KB
64-bit integer IO format: %lld Java class name: MainSubmit Status
又到饭点了,SK同学靠着惯性走到了食堂,但长长的队伍顿时让他失去了食欲。突然,他注意到某个窗口前的队伍里明显存在插队的现象,于是他默默记录下了同学们进队和出队的变化。
对于进队,SK同学只知道队伍里多了一个人,并不知道新来的人是老老实实站到了队尾还是插到了队伍里的某个位置;对于出队,SK同学能确定是队伍里站在最前面的人出队了。
初始时队伍为空,给出条队伍进出的信息,保证已经出队的同学不会再入队,并且最终队伍也为空,现在SK同学想知道有多少不插队的好同学。
Input
第一行是一个正整数,表示测试数据的组数,
对于每组测试数据,
第一行是一个整数,表示这个队伍进出的信息数,
接下来行,每行是两个字符串Opt Name,其中Opt为"in"代表进队,"out"代表出队,Name为进队或出队的人的名字,
所有信息按照时间顺序给出,名字由英文字母和阿拉伯数字组成,长度不超过,保证每个人的名字各不相同。
Output
对于每组测试数据,输出一行,包含一个整数,表示不插队的人数。
Sample Input
16in quailtyin hwq1352249out hwq1352249in zhuaiballlout quailtyout zhuaiballl
Sample Output
2
题目分析:
题目很好理解。就是创建一个队列,然后入队出队,判断出队的是否是按照入队顺序,如果不是按照入队顺序即是插队。统计最后有多少个是不插队的人。
首先建一个队列,里面按照入队顺序存放字符串。然后等读入出队信息的时候,如果出队是正常出队,ans++,就直接删除队首元素,如果不是正常出队,并利用map标记此字符串为1,遇到队首元素标记为1的直接出队。最后输出ans。
#include <cstdio>#include <cstring>#include <iostream>#include <algorithm>#include <queue>#include <map>using namespace std;map<string,int>mp;string s[100007];int main(){int t;cin>>t;while(t--){int n;string cur;mp.clear();queue <string> q;while(!q.empty()){q.pop() ;}cin>>n;int ans=0;for(int i=1;i<=n;i++){cin>>cur;cin>>s[i];if(cur == "in"){q.push(s[i]); }else{while(mp[q.front()] == 1) q.pop() ;if(s[i] == q.front() ) ans++;mp[s[i]] = 1;}}cout<<ans<<endl; }return 0;}
0 0
- Keep In Line(BNUOJ 队列 string,map应用)
- Keep In Line
- Keep In Line
- BNUOJ 44662 水题 (贪心+优先级队列)
- CodeForces 319B-Psychos in a Line(单调队列)
- PAT 1014 Waiting in Line(模拟+队列操作)
- map应用-双向队列
- [PAT甲级]1014. Waiting in Line (30)(银行排队办理业务结束时间 队列的应用)
- Treasure (BNUOJ 44540 栈应用)
- vim map <ESC> in command-line mode
- 1014 Waiting in Line --队列模拟
- BNUOJ Just a String
- BNUOJ 26190 --------------- In Braille
- python:File "<string>", line 1, in <module>
- bnuoj 51124 Simple String Problem(状态dp)
- map & keep & map-indexed & keep-indexed
- 第十五届北京师范大学程序设计竞赛决赛 K. Keep In Line【模拟】
- HDU 5807 Keep In Touch(dp)
- MAC 下配置MQTT 服务器Mosquitto
- Redis集群搭建与简单使用
- codeforces #410 Div.2题解报告
- 在Lazarus中使用打印机
- 开发板的I/O在哪里——韦东山嵌入式Linux视频学习笔记01
- Keep In Line(BNUOJ 队列 string,map应用)
- shell知识体系框图
- el表达式如何获得list长度??
- 作业1
- 刚刚毕业上班的我,为自己的程序员之路开始记录。
- POJ 3061 Subsequence [尺取法] 《挑战程序设计竞赛》3.2
- Lintcode28 Search a 2D Matrix solution 题解
- Java中的泛型(Generic)
- 排序算法Java实现——选择排序(直接选择排序)