哈希表模板
我居然到现在都不会哈希表,我太弱啦!
不上定义了,直接看题吧....因为就是面向这种题目的算法
题意:给定n个数,m组询问,每个输入的数范围1e7,n,m<=1e6
直接代码 其实挺好理解的
#pragma GCC optimize("O2") #include<iostream> #include<cstdio> #include<cstring> #include<algorithm> #include<cmath> #include<queue> #include<stack> #include<set> #include<map> #include<limits.h> #include<ctime> #define N 1000010 typedef long long ll; const int inf=0x3fffffff; const int maxn=2017; using namespace std; inline ll read() { ll f=1,x=0;char ch=getchar(); while(ch>'9'|ch<'0') { if(ch=='-') f=-1; ch=getchar(); } while(ch<='9'&&ch>='0') { x=(x<<3)+(x<<1)+ch-'0'; ch=getchar(); } return f*x; } ll hashmap[N]; bool mark[N]; inline int hash(ll x) { int a=x%N; while(mark[a]==1&&hashmap[a]!=x) a=(a+1)%N; mark[a]=1; return a; } int main() { int n=read(),m=read(); for(int i=1;i<=n;i++) { ll a=read(); hashmap[hash(a)]=a; } for(int i=1;i<=m;i++) { ll a=read(); printf(hashmap[hash(a)]==a?"Yes\n":"No\n"); } }
但其实这道我自己yy的题理论上可以直接map水过....map的用法相信各位神犇应该都会辣
只是复杂度会多一个log...可以视情况自己抉择
就让我永远不在这里写下什么有意义的话——by 吉林神犇 alone_wolf