题解 【CF489B】 BerSU Ball

本题是排序基础题。

我们可以将a[i]、b[i]分别从小到大排序后,依次枚举比较两两组合是否符合要求,最后输出答案ans即可。

AC代码:

 1 #include <bits/stdc++.h>//万能头文件
 2 
 3 using namespace std;//使用标准名字空间
 4 
 5 inline int read()//快速读入
 6 {
 7     int f=1,x=0;
 8     char c=getchar();
 9 
10     while(c<'0' || c>'9')
11     {
12         if(c=='-')f=-1;
13         c=getchar();
14     }
15 
16     while(c>='0' && c<='9')
17     {
18         x=x*10+c-'0';
19         c=getchar();
20     }
21 
22     return f*x;
23 }
24 
25 int m,n,a[110],b[110],ans;//定义变量,含义如分析
26 
27 int main()
28 {
29     n=read();
30 
31     for(register int i=1; i<=n; i++)a[i]=read();
32 
33     m=read();
34 
35     for(register int j=1; j<=m; j++)b[j]=read();
36 
37 //以上为输入
38 
39     sort(a+1,a+1+n);//对男生进行从小到大排序
40     sort(b+1,b+1+m);//对女生进行从小到大排序
41 
42     for(register int i=1; i<=n; i++) //枚举男生
43     {
44         for(register int j=1; j<=m; j++) //枚举女生
45         {
46             if(abs(a[i]-b[j])<=1)//如果满足题目中的条件
47             {
48                 ++ans;//更新答案
49 
50                 b[j]=1000;//因为该女生已经有了舞伴,所以将女生设为不可能再匹配
51 
52                 break;//由于该男生已经有了舞伴,就枚举下一个男生
53             }
54         }
55     }
56 
57     printf("%d",ans);//输出答案
58 
59     return 0;//结束
60 }

 

posted @ 2019-02-26 16:51  csxsi  阅读(190)  评论(0编辑  收藏  举报