zoukankan      html  css  js  c++  java
  • 3:Set

    3:Set

    时间限制: 
    5000ms
     
    内存限制: 
    100000kB
    描述
    现有一整数集(允许有重复元素),初始为空。我们定义如下操作:
    add x 把x加入集合
    del x 把集合中所有与x相等的元素删除
    ask x 对集合中元素x的情况询问
    对每种操作,我们要求进行如下输出。
    add 输出操作后集合中x的个数
    del 输出操作前集合中x的个数
    ask 先输出0或1表示x是否曾被加入集合(0表示不曾加入),再输出当前集合中x的个数,中间用空格格开。
    输入
    第一行是一个整数n,表示命令数。0<=n<=100000。
    后面n行命令,如Description中所述。
    输出
    共n行,每行按要求输出。
    样例输入
    7
    add 1
    add 1
    ask 1
    ask 2
    del 2
    del 1
    ask 1
    样例输出
    1
    2
    1 2
    0 0
    0
    2
    1 0
    提示

    Please use STL’s set and multiset to finish the task

    C++语言: Codee#23831
    01 /*
    02 +++++++++++++++++++++++++++++++++++++++
    03                 author: chm
    04 +++++++++++++++++++++++++++++++++++++++
    05 */
    06
    07
    08 #include <map>
    09 #include <set>
    10 #include <list>
    11 #include <queue>
    12 #include <cmath>
    13 #include <stack>
    14 #include <bitset>
    15 #include <cstdio>
    16 #include <cctype>
    17 #include <vector>
    18 #include <cstdlib>
    19 #include <cstring>
    20 #include <fstream>
    21 #include <sstream>
    22 #include <iomanip>
    23 #include <iostream>
    24 #include <algorithm>
    25
    26 using namespace std;
    27
    28 FILE*            fin         = stdin;
    29 FILE*            fout         = stdout;
    30 const int        max_size     = 10086;
    31
    32 multiset<int> st;
    33 set<int> st1;
    34 int main()
    35 {
    36
    37     int n;
    38     int num;
    39     int tmp;
    40     char str[15];
    41     scanf("%d\n", &n);
    42
    43     while(n--)
    44     {
    45         gets(str);
    46         num = strtol(str + 4, NULL, 10);
    47         switch(str[2])
    48         {
    49         case 'd': //add
    50             st.insert(num);
    51             st1.insert(num);
    52             fprintf(fout, "%d\n", st.count(num));
    53             break;
    54
    55         case 'k': //ask
    56             tmp = st.count(num);
    57             fprintf(fout, "%d %d\n", st1.count(num) ? 1 : 0, tmp);
    58             break;
    59
    60         case 'l': //del
    61             tmp = st.count(num);
    62             fprintf(fout, "%d\n", tmp);
    63             st.erase(num);
    64             break;
    65         }
    66     }
    67    
    68     return 0;
    69 }
  • 相关阅读:
    【数据操作】存储过程编写经验和优化措施
    【项目管理】产品经理的核心能力模型(译)
    [转] SAP DEVELOPMENT TECHNOLOGY LIST
    【架构设计】五个基本工作流模式(转)
    【工具推荐】Office Open XML
    【经验分享】企业可选的当前主流OA产品
    【项目管理】项目启动阶段 制定项目章程
    【转贴文章】 Dos命令收集
    【架构设计】Web应用程序安全性简介
    [转]what is SAP NetWeaver
  • 原文地址:https://www.cnblogs.com/invisible/p/2238457.html
Copyright © 2011-2022 走看看