相聚HNUCM校园食堂

相聚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;
 
}

如果有更好的解决方法,欢迎在下方留言呀!

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值