B. BerSU Ball(贪心)

题意:这是一道配对题,输入数组a,数组b(个数不必相同),要求凑成一对的两个数|a-b|不大于1。求最多能配出多少对。

题解:这是一道贪心题,希望能够尽可能多的配对。第一步,排序:这样能过从小的开始比。如果能过满足条件,就计入答案,就比较下一组数,如果一方的数大于另一方,就让小的那一方,向后移一个数,再和大的那个数比较,直到满足条件。

ACcode:

int main()

{

int n, m,t=0;

int a[110], b[110];

cin >> n;

for (int i = 0; i < n; i++)

cin >> a[i];

cin >> m;

for (int i = 0; i < m; i++)

cin >> b[i];

sort(a, a + n);

sort(b, b + m);

int boy=0, girl=0;

while(boy<n&&girl<m)

{

if (abs(a[boy] - b[girl]) <= 1)//如果满足条件

{

boy++;

girl++;

t++;

}

else if (a[boy] - b[girl] > 1)//女生等级偏低时

girl++;

else if (b[girl] - a[boy] > 1)//男生等级偏低时

boy++;

}

cout << t;

return 0;

}

posted @ 2021-01-29 16:47  Uiney  阅读(79)  评论(0编辑  收藏  举报