博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
1705: 小明在工作(zzuli)
阅读量:6832 次
发布时间:2019-06-26

本文共 1484 字,大约阅读时间需要 4 分钟。

题目描述

小明的工作是负责记录饭堂中正在排队的人的信息 

在他的工作中会有三种可能的事件发生: 
    1.编号为id的学生加入到队伍的最后面 
    2.排在最前面的学生打完饭离开了队伍 
    3.老板过来询问当前排在队伍前方第k个的学生的编号 
由于每天的工作量太大(每天最多有100000个以上事件发生), 
小明苦不堪言,让你写个程序帮他

输入

输入的第一个数是正整数T,表明接下来有T组数据 

每组数据的第一个数为正整数n,表示有n件事会发生 
接下来有n行,每行分别表示上诉三种事件的其中一种,格式分别如下: 
1 id 
3 k 
注意当队伍中已经没人的时候请忽略第2种事件,每组数据新开始的时候队伍中人数都为0

输出

对于给个第3种的事件,请输出第k个学生的编号, 

如果队伍的人数小于k,输出“na li you zhe me duo ren”。

样例输入

251 11 23 123 121 13 2

样例输出

12na li you zhe me duo ren

来源

 

1 #include
2 #include
3 #include
4 #include
5 #include
6 using namespace std; 7 8 list
q; 9 list
::iterator p;10 void push()11 {12 string s;13 cin >> s;14 q.push_back(s);15 }16 void likai()17 {18 q.pop_front();19 }20 void find()21 {22 int k;23 scanf("%d", &k);24 if (q.empty()||q.size() < k)25 cout << "na li you zhe me duo ren" << endl;26 else27 {28 p = q.begin();29 for (int i = 0; i < k - 1; i++)30 p++;31 cout << *p << endl;32 }33 }34 int main()35 {36 int t,k;37 cin >> t;38 while (t--)39 {40 q.clear();41 scanf("%d", &k);42 while (k--)43 {44 int temp;45 cin >> temp;46 if (temp == 2 && q.empty()) continue;47 switch (temp)48 {49 case 1: push(); break;50 case 2: likai(); break;51 case 3: find();break;52 }53 }54 }55 return 0;56 }

对于此题我表示深深的痛苦,不过这个题对我来说帮助蛮大的,至少让我又复习了一下stl的queue队列,vector,list;

刚开始用的队列,发现好像要用到遍历,尴尬,队列不能随机访问,后面又用了vector,可是只支持往后添加和删除元素,

哎,无奈!

转载于:https://www.cnblogs.com/kangdong/p/8831242.html

你可能感兴趣的文章
一个屌丝程序猿的人生(七)
查看>>
安装ubuntu和安装ubuntu后要安装的软件列表
查看>>
设置控件全局显示样式 appearance
查看>>
Java集合类:AbstractCollection源码解析
查看>>
Incorrect key file for table './xx_db/xx_table.MYI'; try to repair it
查看>>
自定义jQuery插件Step by Step
查看>>
linux下编译安装apache
查看>>
PHP采集curl应用的一点小疑惑
查看>>
awstats 日志分析工具linux下的安装和使用
查看>>
css实现圆角三角形例子(无图片)
查看>>
最全的spark基础知识解答
查看>>
一些硬盘相关知识
查看>>
创建、删除表
查看>>
Java继承中成员方法的overload(重载/过载)
查看>>
C#的Timer
查看>>
SQL多表查询
查看>>
V4L2应用程序框架-二【转】
查看>>
CDN网络(一)之典型的CND架构与HTTP协议的缓存控制
查看>>
opps kio
查看>>
SQL截取字符串函数
查看>>