Hash_集合

Posted oyzx~

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Hash_集合相关的知识,希望对你有一定的参考价值。

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <algorithm>
 4 #include <cstring>
 5 using namespace std;
 6 #define maxn 100005
 7 #define maxm 2000000
 8 int na,nb,now[maxm],prep[maxn],val[maxn];
 9 void read(int &x){
10     x=0; int f=1; char ch;
11     for (ch=getchar();!isdigit(ch);ch=getchar()) if (ch==\'-\') f=-1;
12     for (;isdigit(ch);ch=getchar()) x=x*10+ch-\'0\'; x*=f;
13 }
14 void Ha(int x){
15     int pos=val[x]%maxm+1;
16     prep[x]=now[pos],now[pos]=x;
17 }
18 bool search(int x){
19     int pos=x%maxm+1; bool bo=0;
20     for (int i=now[pos];i;i=prep[i]){
21         if (val[i]==x){
22             bo=1; break;
23         }
24     }
25     return bo;
26 }
27 int main(){
28     memset(now,0,sizeof(now));
29     read(na);
30     for (int i=1;i<=na;i++) read(val[i]),Ha(i);
31     int ans=0;
32     read(nb); int x;
33     for (int i=1;i<=nb;i++){
34         read(x);
35         if (!search(x)) ans++;
36     } printf("%d\\n",ans);
37     return 0;
38 }
View Code

题目链接:http://begin.lydsy.com/JudgeOnline/problem.php?id=1720

题目大意:给定两个集合A、B,集合内的任一元素x满足1 ≤ x ≤ 10^9,并且每个集合的元素个数不大于10^5。我们希望求出只需确定在B 中但是不在 A 中的元素的个数即可。

做法:Hash入门题,我们对第一个数组hash,存入哈希表,第二个数组在Hash数组上查询即可,统计答案。

Hash。

 

以上是关于Hash_集合的主要内容,如果未能解决你的问题,请参考以下文章

wk_03

set集合去重机制

如何从URL获取片段标识符(hash#之后的值)?

Redis01_概述安装keyStringList列表Set集合Hash哈希Zset有序集合配置文件详解

基本数据类型__集合

python中几个常见的黑盒子之“字典dict” 与 “集合set”