找朋友时间限制: 1 Sec 内存限制: 128 MB
提交: 406 解决: 58
[提交][状态][讨论版]
题目描述
小学毕业后,同学们都进入了不同的初中,小明非常想念小伙伴们,所以他打算联系小学的同学们。
现在他得到了市内某所初中的所有名单,找出其中小明的小伙伴们。
现在他得到了市内某所初中的所有名单,找出其中小明的小伙伴们。
输入
第一行一个整数n,表示某初中人数。
接下来n行,每行一个字符串,只有小写字母组成,表示该校每个人的拼音。数据保证没有人拼音相同,且已经按照字典序从小到大排序。
第n+2行有一个整数m,表示小明的小伙伴个数。
最后m行,每行一个字符串,只有小写字母组成,表示每个小伙伴的拼音,同样保证没有重复。
接下来n行,每行一个字符串,只有小写字母组成,表示该校每个人的拼音。数据保证没有人拼音相同,且已经按照字典序从小到大排序。
第n+2行有一个整数m,表示小明的小伙伴个数。
最后m行,每行一个字符串,只有小写字母组成,表示每个小伙伴的拼音,同样保证没有重复。
输出
输出所有在该校的小伙伴的拼音。
每行一个拼音,顺序按照小伙伴给出的顺序。
每行一个拼音,顺序按照小伙伴给出的顺序。
样例输入
3
alice
bob
zhangsan
2
lisi
zhangsan
样例输出
zhangsan
提示
对于100%的数据,n<=100000,m<=10000,每个人拼音长度不超过15。
所有数据,学校学生名单中的姓名,都是按照字典序从小到大排序。
来源
如果字符串 二分查找进行判断的话百分百tle,然后作为萌新,tle无数发都不知道怎么改。之前stl不怎么用嘛,看大佬一分钟写完了发给我,只能感叹nb。自己还是太菜。
代码自己看,很简单。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 |
#include <iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<map> using namespace std; map<string,bool> mat; int main() { // freopen("in.txt","r",stdin); int n,m; string a; cin>>n; while(n--) { cin>>a; mat[a] = true; } cin>>m; while(m--) { cin>>a; if(mat[a]) cout<<a<<endl; } return 0; } |