zoukankan      html  css  js  c++  java
  • 【模板】Hash拉链法

    Hash的挑战

    (hash.cpp/c/pas)

    Time Limit:1Sec  Memory Limit:128 MB

    问题背景

    土匪帮主写作业的时候遇到了一道搜索题,用map结果TLE了3个点。经过无数次调 试,才发现map的时间复杂度原来是n*log2(n),为此土匪就来学习HASH。但合适的教程,于是向您请教,如果你愿意,就先来接受土匪的挑战,证明下你的HASH是正确的吧!

    问题描述

    具体测试内容如下:由土匪给定一串长度为n的数组,在规定的时间内回答m组问题,每个问题都很简单,你需要回答每一个给的数字是否出现在给定的数组内。如果这个数字存在,请输出Yes;否则输出No

    Intput

    第一行有一个正整数n,表示待查询数组的元素个数。 接下来第i+1行表示第i个元素的值。第n+2行一个正整数m,表示待查询的元素个数。再接下来第n+2+i行表示第i个待查询元素的值。

    Output

    输出共m行,每一行输出Yes或者No。

    Data Limitation

    30%的数据满足:1<=m,n,A[i],B[i]<=10000
    60%
    的数据满足:A[i],B[i]<=1000000000,1<=m,n<=1000000
    100%
    的数据满足:1<=m,n,A[i],B[i]<=20000000

     

     

     


    【题解】

    #include<cstdio>
    inline int read(){char ch=getchar(),w=1;int x=0;while(ch<'0'||ch>'9'){if(ch=='-')w=-1;
    ch=getchar();}while(ch>='0'&&ch<='9'){x=x*10+ch-'0';ch=getchar();}return w*x;}
    inline void wr(int x){if(x<0)putchar('-'),x=-x;if(x>9)wr(x/10);putchar(x%10+'0');}
    inline void wrln(int x){wr(x);putchar('
    ');}
    const int mod=100003;
    struct Node{
    	int key;
    	Node* nxt;
    	Node(){
    		key=0;
    		nxt=NULL;
    	}
    };
    Node H[mod+1000];
    int hash(int val){
    	return val%mod;
    }
    bool search(int v){
    	int id=hash(v);
    	Node *p=H[id].nxt;
    	for(;p;p=p->nxt)if(p->key==v)return true;
    	return false;
    }
    void Insert(int v){
    	if(search(v))return;
    	int id=hash(v);
    	Node *p=new Node();
    	p->key=v;
    	p->nxt=H[id].nxt;
    	H[id].nxt=p;
    	return;
    }
    char ans[2][12]={{'N','o',''},{'Y','e','s',''}};
    int main(){
    	freopen("hash.in","r",stdin);
    	freopen("hash.out","w",stdout);
    	int n,m,a;
    	n=read();
    	for(int i=1;i<=n;i++){
    		a=read();
    		Insert(a);
    	}
    	m=read();
    	for(int i=1;i<=m;i++){
    		a=read();
    		puts(ans[search(a)]);
    	}
    	return 0;
    }





  • 相关阅读:
    python解析网页中js动态添加的内容
    pycharm索引index时间很长的原因
    github/gitlab ssh-keys全局唯一
    使用gc、objgraph干掉python内存泄露与循环引用!
    ImportError: No module named _curses;Color support is disabled, python-curses is not installed.解决办法
    jinjia2模板学习
    flask可以通过缓存模板或者页面达到性能提升
    python的websocket实现Tornado
    flask的debug模式下,网页输入pin码进行调试
    Git 环境安装
  • 原文地址:https://www.cnblogs.com/kcfzyhq/p/8475589.html
Copyright © 2011-2022 走看看