首页 > 其他 > 详细

1720: 集合

时间:2017-01-26 13:14:12      阅读:366      评论:0      收藏:0      [点我收藏+]
技术分享
#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstring>
using namespace std;
#define maxn 100005
#define maxm 2000000
int na,nb,now[maxm],prep[maxn],val[maxn];
void read(int &x){
    x=0; int f=1; char ch;
    for (ch=getchar();!isdigit(ch);ch=getchar()) if (ch==-) f=-1;
    for (;isdigit(ch);ch=getchar()) x=x*10+ch-0; x*=f;
}
void Ha(int x){
    int pos=val[x]%maxm+1;
    prep[x]=now[pos],now[pos]=x;
}
bool search(int x){
    int pos=x%maxm+1; bool bo=0;
    for (int i=now[pos];i;i=prep[i]){
        if (val[i]==x){
            bo=1; break;
        }
    }
    return bo;
}
int main(){
    memset(now,0,sizeof(now));
    read(na);
    for (int i=1;i<=na;i++) read(val[i]),Ha(i);
    int ans=0;
    read(nb); int x;
    for (int i=1;i<=nb;i++){
        read(x);
        if (!search(x)) ans++;
    } printf("%d\n",ans);
    return 0;
}
View Code

1720: 集合

Time Limit: 1 Sec  Memory Limit: 128 MB
Submit: 12  Solved: 7
[Submit][Status][Web Board]

Description

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

Input

输入两行,分别表示两个集合,每行的第一个整数为这个集合的元素个数(至少一个),然后紧跟着这个集合的元素(均为不同的正整数)

Output

在B 中但是不在 A 中的元素的个数即可

Sample Input

8 1 2 3 4 5 6 7 8
6 2 3 4 5 6 7

HINT

 

Source

1720: 集合

原文:http://www.cnblogs.com/LHR-HY/p/6351507.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!