西南科大oj 2613

来源:互联网 发布:电脑淘宝创建快捷方式 编辑:程序博客网 时间:2024/04/29 00:13

ACM-ICPC中国区教练群内有各个高校的ACM教练和老师。某天上决╇ф装成教练混进了这个群。经过观察发现,群内经常发布一些比赛通知,且群内的各个高校的教练总是能收到比赛通知,并组织学生参加比赛。同时,每天也有些退役的教练退出该群,也有新的教练加入该群。每个教练的群名片总是为”[学校名]教练名”,如”[swust]w703710691d”。现在上决╇ф已经将该群的日志记录下来了,且日志记录前,没有教练在群中。他想知道,每次比赛发布的时候,有多少所不同的高校能收到比赛通知。

Input
第一行输入一个正整数n
(1≤n≤105),表示上决╇ф记录下的日志的条数。 接下来n行,每行一条日志。日志分别为以下三种类型: JOIN [school]name 一名名为name、来自于school高校的的教练加入了教练群。 LEAVE [school]name 一名名为name、来自于school高校的的教练离开了教练群。 HOLD 此时发布了比赛通知。 由于上决╇ф是使用钢笔和纸手动记录下了这有趣的一切,所以可能有错误的记录。包括:加入了一个已经在群内的教练,离开一个不在群中的教练。这些操作都是非法的,应该予以忽略。请注意,不同高校,可能存在相同的名字的教练。但是同一高校内,一定不会存在名字相同的教练。 保证学校名和教练名只包含大小写字母和下划线。且每个学校名和教练名的长度均不超过20
个字符
Output
对于每一次HOLD,输出有多少所不同的高校能收到比赛通知。

Sample InputRaw

10
JOIN [swust]just_sort
JOIN [swust]Shunhua_Tan
JOIN [uestc]Zhu_He
JOIN [thu]Lijie_Chen
HOLD
LEAVE [swust]just_sort
HOLD
JOIN [swust]Shunhua_Tan
LEAVE [uestc]Zhu_He
HOLD

Sample OutputRaw

3
3
2

思路一开始没有做出来是因为,那个,一个学校的人,在还是没在,因该怎么搞,一点都不清楚,好像没有三维的,一开始有点想map + set了。但是感觉好傻逼。。。。。后来看看别人的。好吧,就是整个字符串一起放在。看是否出现过,因为,一个学校的人没有同名字的,所以。。。。诶。。。。

#include <cstdio>#include <string>#include <cstring>#include <queue>#include <algorithm>#include <cmath>#include <map>using namespace std;map<string , int> vis , use; int main(){    int n , cnt = 0;    scanf("%d",&n);    while(n--){        char a[20] , ss[50];        scanf("%s",a);        string str , s1 ;        if(a[0] == 'H') printf("%d\n",cnt);        else if(a[0] == 'J'){            scanf("%s",ss);            if(vis[ss]) continue;            else vis[ss] = 1;            int l = strlen(ss) , i;            for(i = 0 ; i < l ; i++){                str += ss[i];            }            for(i = 1 ; ss[i] != ']' ; i++){                s1 += ss[i];            }            if(use[s1] == 0) cnt++ ;            use[s1]++;        }        else if(a[0] == 'L'){            scanf("%s",ss);            if(vis[ss] == 0) continue;            else vis[ss] = 0;            int l = strlen(ss),i;            for(int i = 1 ; ss[i] != ']' ; i++){                s1 += ss[i];            }            use[s1]--;            if(use[s1] == 0) cnt--;        }    }    return 0;}
0 0
原创粉丝点击