哈希表模板
阿新 • • 發佈:2017-09-14
mat printf div cst blog 給定 while log 範圍
我居然到現在都不會哈希表,我太弱啦!
不上定義了,直接看題吧....因為就是面向這種題目的算法
題意:給定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...可以視情況自己抉擇
哈希表模板