P1571 眼红的Medusa

题目描述

虽然Miss Medusa到了北京,领了科技创新奖,但是他还是觉得不满意。原因是,他发现很多人都和他一样获了科技创新奖,特别是其中的某些人,还获得了另一个奖项——特殊贡献奖。而越多的人获得了两个奖项,Miss Medusa就会越眼红。于是她决定统计有哪些人获得了两个奖项,来知道自己有多眼红。

输入输出格式

输入格式:

 

输入第一行,有两个数n,m,表示有n个人获得科技创新奖,m个人获得特殊贡献奖。

第二行,n个正整数,表示获得科技创新奖的人的编号

第三行,m个正整数,表示获得特殊贡献奖的人的编号

 

输出格式:

 

输出一行,为获得两个奖项的人的编号,按在科技创新奖获奖名单中的先后次序输出。

输入输出样例

输入样例#1: 复制
4 3
2 15 6 8
8 9 2
输出样例#1: 复制
2 8

说明

对于60%的数据,n<=1000,m<=1000

对于100%的数据,n<=100000,m<=100000,获得奖项的人的编号在2*10^9以内

输入数据保证第二行任意两个数不同,第三行任意两个数不同。

开始想输入a[i],b[i],

然后定义一个c数组,c[a[i]]++,c[b[i]]++,

然后循环第一个,c要等于2的话就输出,

好像也可以,(没试)

看范围2*10^9。

就没再考虑。

用map???

这个新知识不错啊~

关键还是思路,

感觉这些入门的,,普及的题,

思路都还挺奇妙的。

这个题也可以用来理解map。

代码:

 1 #include<iostream>
 2 #include<cstdio>
 3 #include<cmath>
 4 #include<algorithm>
 5 #include<cstring>
 6 #include<map>
 7 using namespace std;
 8 
 9 int n,m;
10 long long a[100002],b[100002];
11 map<long long,bool>x;
12 
13 int main()
14 {
15     scanf("%d%d",&n,&m);
16     for(int i=1; i<=n; ++i)
17         scanf("%lld",&a[i]);
18     for(int i=1; i<=m; ++i)
19     {
20         scanf("%lld",&b[i]);
21         x[b[i]]=1;
22     }    
23     for(int i=1;i<=n;++i)
24         if(x[a[i]]==1)
25             printf("%lld ",a[i]);
26     return 0;
27 }

如果你不开心,那我就把右边这个帅傻子分享给你吧, 

你看,他这么好看,那么深情的望着你,你还伤心吗? 

真的!这照片盯上他五秒钟就想笑了。 

一切都会过去的。

原文地址:https://www.cnblogs.com/Mary-Sue/p/9431506.html