相聚HNUCM校园食堂
题目:HNUCM的食堂重新装修了,小明决定约上朋友去食堂相聚,在食堂里,小明看到了M位男同学,N位女同学,小明是一个颜值控,因此他对每一位男生和女生都有一个颜值打分,他心里yy着想为这些单身狗们进行配对,小明真是一个关心同学的人!但小明认为配对同学的颜值之差不能超过5,注意必须是一位男同学和一位女同学才能配对,虽然小明对于可以配对的人数已经有了答案,但他想考考你的编程能力,因此他想请你帮他用编程算一下最多可以配对多少个人。(本题介绍仅作题目背景使用,无任何其他观点)
思路:一定要排序,记得把每个人都标记一下,避免数据重复!!!
AC代码:
#include<bits/stdc++.h>
#define ll long long
using namespace std;
struct Node{
int v;
int id;
};
bool cmp(Node a,Node b){
return a.v<b.v;
}
int main()
{
int n,m;
while(cin>>n>>m)
{
Node a[n],b[m];
int i;
for(i=0; i<n; i++)
{
cin>>a[i].v;
a[i].id=i;
}
for(i=0; i<m; i++)
{
cin>>b[i].v;
b[i].id=i;
}
sort(a,a+n,cmp);
sort(b,b+m,cmp);
int ans=0;
for(i=0; i<n; i++)
{
int j=0;
while(j<m)
{
if(a[i].v-b[j].v<=5&&a[i].v-b[j].v>=-5&&a[i].id!=-1&&b[j].id!=-1)
{
++ans;
a[i].id=-1;
b[j].id=-1;
continue;
}
++j;
}
}
printf("%d\n",ans*2);
}
return 0;
}
如果有更好的解决方法,欢迎在下方留言呀!