集合 【set】
本人水平有限,题解不到为处,请多多谅解
本蒟蒻谢谢大家观看
题目:
1720: 集合
Time Limit: 1 Sec Memory Limit: 128 MBSubmit: 235 Solved: 118
[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
Sample Output
0
HINT
用set来判断是否重复。
用count来输出第二列数,
若set.count(第二列的数)有值,代表这个数在第一列出现过。若为0,则代表没有出现过。
code:
1 #include<bits/stdc++.h> 2 using namespace std; 3 #define ll long long 4 set<ll>h; 5 ll n,m,b,a,ans=0; 6 int main() 7 { 8 scanf("%lld",&n); 9 for(ll i=1;i<=n;i++) 10 { 11 scanf("%lld",&b); 12 h.insert(b); 13 } 14 scanf("%lld",&m); 15 for(ll j=1; j<=m; j++) 16 { 17 scanf("%lld",&a); 18 if(!h.count(a)) 19 { 20 ans++; 21 } 22 } 23 printf("%d\n",ans); 24 return 0; 25 }