【CQYZ-vijos】P1333 舞伴的搭配(贪心算法)
来源:互联网 发布:cookie登录 php 编辑:程序博客网 时间:2024/05/16 04:46
【问题描述】
学校要举行一年一度的文艺汇演,笑笑所在年级决定排练一个舞蹈,为选择表演者,老师定下了如下规则:为了舞蹈的美观,当且仅当一男一女的身高之差不超过给定的整数c时,这两个人可以成为舞伴进行演出。笑笑所在年级共有m名男生和n名女生,给定每个人身高(身高在0到1000厘米之间的整数),问最多能有多少对舞蹈者进行演出。
例如,有3名女生和3名男生,女生身高分别为160cm,170cm,180cm,男生身高分别为170cm,175cm,185cm,c=7cm。那么最多有2对舞蹈者:可以是女2和男1一组,女3和男2一组,共两组(女1不能和任何男生成为一组),所以这个情况下2将成为最后答案。
【输入格式】
第1行三个正整数m,n,c,分别表示男生人数、女生人数和身高最大差值。
第2行m个整数,分别表示m个男生的身高。
第3行n个整数,分别表示n个女生的身高。
【输出格式】
仅一个整数,表示舞蹈者的最大数量。
【输入样例】
3 3 7
170 185 175
160 170 180
【输出样例】
2
【数据范围】
m,n<=1000
————————————贪心策略—————————————
- 分析
这次要我们做的是给男生女生分配舞伴,问题是要求出最多舞蹈者组数,也就是求一个最优答案,所以往后的目标就在于:如何做到每一步“看起来最优”
也就是让每一个舞者所配对的人都恰好处在条件(升高差 < C )边缘
2. 分步
这道题的分步很显然是依照配对过程(次数)进行分步,则总步数为:n+m
3. 方案
这道题的方案可以视为:为一位舞者分配最优舞伴,而我们要是他们是恰好的“天生一对” ,不妨在此前先进行排序(推荐:sort),让后从最矮的舞者间开始比较,然后再逐步修改选中舞者
————————————代码实现—————————————
#include<iostream>#include<cstdio>#include<algorithm>using namespace std;int Boy[1005],Girl[1005];int m,n,c;bool cmp(int a,int b){ return a<b;}int main(){ cin>>m>>n>>c; for(int i=1;i<=m;i++){ cin>>Boy[i]; } for(int i=1;i<=n;i++){ cin>>Girl[i]; } sort(Boy+1,Boy+1+m,cmp); sort(Girl+1,Girl+1+n,cmp); int a=1; //记录当前选中男生 int b=1; //记录当前选中女生 int count=0; //当前舞者数量 while(a<=m && b<=n){ //还有剩男和剩女 if(Boy[a]-Girl[b]>c){ //如果男生太高 b++; //访问下一个女生 } else if(Girl[b]-Boy[a]>c){ //如果女生太高 a++; //访问下一个男生 } else { a++; b++; count++; } } cout<<count;}
其中有关sort链接:http://www.cnblogs.com/A-Song/archive/2012/02/02/2336337.html
- 【CQYZ-vijos】P1333 舞伴的搭配(贪心算法)
- vijos p1471 教主的游乐场(贪心)
- 男女舞伴贪心
- SSL P1333 地鼠的困境
- Vijos P1431 守望者的逃离(动态规划,贪心)
- |Vijos|贪心|P1021 Victoria的舞会1
- 舞伴问题(链队)
- 舞伴问题(2)
- Vijos P1844 积木大赛(贪心)
- [18] Vijos P1845 花匠(贪心)
- Vijos P1431 守望者的逃离 (动态规划+贪心)(未解决)
- 简单的舞伴问题实现
- 【贪心】vijos P1745 巧克力
- 【贪心】Vijos P1615 旅行
- |Vijos|贪心|P1444 区间
- 【vijos】【贪心】最小差距
- 数据结构与算法之———舞伴问题(队)
- Javascript数据结构算法之队列(舞伴分配,基数排序,模拟优先就诊病人)
- CODEFORCES 272D Dima and Two Sequences <排列组合>
- Cocos网络访问——代理模式(2)
- Hibernate应用的优化
- 二叉树
- POJ 1961 Period(KMP)
- 【CQYZ-vijos】P1333 舞伴的搭配(贪心算法)
- C++中虚函数解析
- 日期类问题
- 分享一个圆角自定义的漂亮AlertDialog
- java旅行第二站--JavaSE第四天
- 【字符串8】正则表达式匹配
- codeforces #365 div2ABC题解
- Android 6.0+ 运行时权限
- Action找不到路径