cogs 1176. [郑州101中学] 月考 Set 做法

1176. [郑州101中学] 月考

★★☆   输入文件:mtest.in   输出文件:mtest.out   简单对比
时间限制:1 s   内存限制:128 MB

【题目描述】

在上次的月考中Bugall同学违反了考场纪律还吃了处分,更可气的是在第二天的校会时
 间学校就此事做了全校通报. 现已知在当天校会时间有总共N个同学听到了有关Bugall的处分决定.
 
 Bugall同学在铁一有M个朋友,这M个人中有的可能听到了当天的处分决定,有的可能没
 有听到,现在Bugall同学想知道他有几个朋友听到了当天的处分通报.

【输入格式】

第一行为一个整数N,从第2行到N+1行,每行用一个长度不超过200的字符串表示
 一个人的名字.
  第N+2行为一个整数M,从第N+3行到N+M+2行,每行用一个长度不超过200的字符
 串表示Bugall同学一个朋友的名字.

【输出格式】

输出有几个Bugall同学的铁一朋友在当天的校会时间听到了Bugall处分通报.保证不重名。

【样例输入】

3
Dazui
Erge
Dapigu
2
Varpro
Erge

【样例输出】

1
#include<bits/stdc++.h>
using namespace std;
set<string> st;
map<string,bool> mp;
int main()
{
    freopen("mtest.in","r",stdin);
    freopen("mtest.out","w",stdout);
    int n;
    scanf("%d",&n);
    while(n--)
    {
        char s[205];
        scanf("%s",s);
        string ss(s);
        transform(ss.begin(),ss.end(),ss.begin(),::tolower);    //algorithm 
        st.insert(ss);//map 是insert(make_pair(,))
    //    set<string>::iterator it=st.find(ss);
    //    if(it!=st.end()) 
    //        st.erase(st.find(ss));//删除    map的用法是一样的 
    //    for(set<string>::iterator i=st.begin();i!=st.end();i++)
    //        printf("%s
",(*i).c_str());
    //    for(map<string,bool>::iterator i=mp.begin();i!=mp.end();i++)
    //        printf("%s
",(i->first).c_str(),i->second); 
    //    vector<int> v;
    //    for(std::vector<int>::iterator i=v.begin();i!=v.end();i++)
    //        printf("%d
",*i);
    //    for(int i=0;i<v.size();i++)
    //        printf("%d
",v[i]);
    //    v.push_back(x);v.pop_back();
    }    
    scanf("%d",&n);
    int ans;
    while(n--)
    {
        char s[205];
        scanf("%s",s);
        string ss(s);
        transform(ss.begin(),ss.end(),ss.begin(),::tolower);    
        ans+=st.count(ss);//返回是否存在 
    }
    printf("%d
",ans);
    return 0;
}
View Code
原文地址:https://www.cnblogs.com/Tidoblogs/p/11346737.html