zoukankan      html  css  js  c++  java
  • 1705: 小明在工作(zzuli)

    题目描述

    小明的工作是负责记录饭堂中正在排队的人的信息 
    在他的工作中会有三种可能的事件发生: 
        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”。

    样例输入

    2
    5
    1 1
    1 2
    3 1
    2
    3 1
    2
    1 1
    3 2

    样例输出

    1
    2
    na li you zhe me duo ren

    来源

    2015广东工业大学ACM校赛-初赛 

     1 #include<iostream>
     2 #include<queue>
     3 #include<cstdio>
     4 #include<string>
     5 #include<list>
     6 using namespace std;
     7  
     8 list<string> q;
     9 list<string>::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     else
    27     {
    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,可是只支持往后添加和删除元素,

    哎,无奈!

  • 相关阅读:
    全排列
    06-联系人管理(xib应用)
    单键模式
    在mac上截屏的几种方式
    05-Tom猫(UIImageView的简单运用)
    04-图片排列切换
    03-图片浏览器(plist的简单应用)
    02-动态创建按钮
    01-实现图片按钮的缩放、动画效果(block的初步应用)
    oracle 监听动态和静态的配置
  • 原文地址:https://www.cnblogs.com/kangdong/p/8831242.html
Copyright © 2011-2022 走看看