博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
【2019年乐山师范学院程序设计大赛 --- J. 寻找舞伴】贪心
阅读量:2038 次
发布时间:2019-04-28

本文共 1074 字,大约阅读时间需要 3 分钟。

【2019年乐山师范学院程序设计大赛 --- J. 寻找舞伴】贪心

题目来源:

Description

学校周末举办舞会,有 n 位男同学和 m 位女同学参加。每位同学的舞蹈熟练度可能不一样,要求男同学与女同学之间搭配形成搭档,且舞蹈熟练度最多相差 1。

分别给出每位男同学的舞蹈熟练度与每位女同学的舞蹈熟练度,需要能求出可以组合的最多的搭档数量。

Input

第一行仅有一个整数 n (1 ≤ n ≤ 100),表示男同学的数量。

第二行有一个整数序列,a1, a2, …, an (1 ≤ ai ≤ 100),ai 表示每个男同学的舞蹈熟练度。
第三行仅有一个整数 m (1 ≤ m ≤ 100),表示女同学的数量。
第四行有一个整数序列,b1, b2, …, bm (1 ≤ bi ≤ 100),bi 表示每个男同学的舞蹈熟练度。

Output

输出一个整数,表示能组合出搭档的最多数量。

Sample Input

4

1 4 6 2
5
5 1 5 7 9

Sample Output

3

解题思路

这次要我们做的是给男生女生分配舞伴,问题是要求出最多舞蹈者组数,也就是求一个最优答案,所以往后的目标就在于:如何做到每一步“看起来最优”

也就是让每一个舞者所配对的人都恰好处在条件(升高差 < 1 )边缘

那么我们可以先将男女生身高分别排序。

然后贪心的找就行了。

AC代码:

#include 
using namespace std;#define SIS std::ios::sync_with_stdio(false),cin.tie(0),cout.tie(0)#define endl '\n'const int MAXN = 105;int a[MAXN],b[MAXN];int main(){
SIS; int n,m; cin >> n; for(int i=0;i
> a[i]; cin >> m; for(int i=0;i
> b[i]; sort(a,a+n); sort(b,b+m); int i=0,j=0,ans=0; while(i
1) j++; else if(b[j]-a[i]>1) i++; else ans++,i++,j++; } cout << ans << endl; return 0;}

转载地址:http://vsyof.baihongyu.com/

你可能感兴趣的文章
SpringMVC基于session存储注解的值 (全局使用)
查看>>
linux常用命令
查看>>
linux使用crontab定时任务
查看>>
Java分布式应用技术架构介绍
查看>>
Redis整合Spring结合使用缓存实例
查看>>
Spring的AOP是如何实现代理
查看>>
Spring方法拦截器MethodInterceptor
查看>>
shell自动监控重启Tomcat脚本
查看>>
Linux中执行shell脚本的4种方法总结
查看>>
tomcat 性能优化及压力测试
查看>>
Kafka 设计与原理详解
查看>>
对Rabbitmq rpc返回队列的一点理解
查看>>
HttpServletRequest和ServletRequest的区别
查看>>
初学Shiro
查看>>
java8之Lambda表达式 1:简介
查看>>
java8之Lambda表达式 2:内建函数式接口
查看>>
java8之Lambda表达式 3:数据流
查看>>
java8之Lambda表达式 4:MapReduce开发案例
查看>>
java性能优化之一 VO的使用
查看>>
mysql删除数据不能带表名
查看>>