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\n",(*i).c_str()); // for(map<string,bool>::iterator i=mp.begin();i!=mp.end();i++) // printf("%s\n",(i->first).c_str(),i->second); // vector<int> v; // for(std::vector<int>::iterator i=v.begin();i!=v.end();i++) // printf("%d\n",*i); // for(int i=0;i<v.size();i++) // printf("%d\n",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\n",ans); return 0; }