题目描述
给出n个正整数,然后有m个询问,每个询问一个整数,询问该整数是否在n个正整数中出现过。
输入描述
第一行两个整数 n 和m。
第二行n个正整数(1<=n<= 100000)
第三行m个整数(1<=m<=100000)
输出描述
一共m行,若出现则输出YES,否则输出NO
样例输入
4 2
2 1 3 4
1 9
样例输出
YES
NO
所有数据都不超过10^8
第一次真正意义上学哈希表,记录下该模板
代码如下:
#include<stdio.h> #include<algorithm> #include<vector> using namespace std; const int mod=10007; vector<int> mp[10007]; int hash(int x) { return x%mod; } int main() { int n,m; scanf("%d%d",&n,&m); for(int i=1;i<=n;++i) { int tep; scanf("%d",&tep); mp[hash(tep)].push_back(tep); } for(int i=1;i<=m;++i) { int tep; bool flag=false; scanf("%d",&tep); for(int j=0;j<mp[tep].size();++j) if(tep == mp[hash(tep)][j]) { flag=true; break; } if(flag) printf("YES "); else printf("NO "); } return 0; }