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 }
  • 相关阅读:
    [ USACO 2018 OPEN ] Out of Sorts (Platinum)
    [ USACO 2018 OPEN ] Out of Sorts (Gold)
    [ USACO 2018 OPEN ] Out of Sorts (Silver)
    [ BZOJ 4236 ] JOIOJI
    [ HAOI 2012 ] 容易题
    [ HAOI 2008 ] 玩具取名
    「BZOJ 4502」串
    Codeforces 493 E.Devu and Birthday Celebration
    「TJOI 2018」教科书般的亵渎
    「TJOI 2018」游园会 Party
  • 原文地址:https://www.cnblogs.com/invisible/p/2238457.html
Copyright © 2011-2022 走看看