博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
最大匹配+vector的应用
阅读量:5011 次
发布时间:2019-06-12

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

非诚勿扰

Time Limit : 3000/1000ms (Java/Other)   Memory Limit : 65535/32768K (Java/Other)
Total Submission(s) : 134   Accepted Submission(s) : 15

Font: Times New Roman | Verdana | Georgia

Font Size: ← →

Problem Description

某卫视新推一档类似“非诚勿扰”的征婚交友节目,每期节目均有N名男生和N名女生。节目开始前每人都要给出自己的薪水和对另一半的薪水期望(比自己高或者比自己低)。一名男生只能和一名女生配对,并且每人要么和薪水比自己高的异性配对,要么和薪水比自己低的异性配对,如果薪水一样的话两个人是不可能配对成功的。
现请你写一程序,对某期的男女嘉宾配对成功的最大值进行计算。

Input

输入包含多组数据,其中第一行一个整数 T,表示数据组数。
对于每组数据,第一行是正整数N(1≤ N ≤ 100 000),表示男女嘉宾各自的人数;第二行包含N个整数(绝对值大于等于1500并小于等于2500),其绝对值代表男生的薪水,该值如是正数表示该男生只能接受薪水比自己高的女生,如是负数表示他只能接受薪水比自己低的女生;第三行类似第二行,表示的是N个女生各自的薪水和对另一半的期望。

Output

对于每组数据,输出一行,用一个整数表示配对成功的最大值。

Sample Input

3 1 -1800 1800 1 1700 -1800 2 -1800 -2200 1900 1700

Sample Output

0 1 2
代码:
#include
#include
#include
#include
using namespace std;
vector
L[2];//L[0]存放男生中希望工资比女生高的,H[0]存放男生中希望工资比女生低的; vector
H[2];//L[1]存放女生中希望工资比男生高的,H[1]存放女生中希望工资男女生低的; int N,M;
void math(vector
&l,vector
&h)//找l中大于h中最大匹配数; {
   if(l.empty()||h.empty())//为空时返回;    return ;    for(int i=l.size()-1,j=h.size()-1;i>=0;i--,j--,M++)//以l为标准进行匹配,从大到小往前推;    {
     while(j>=0&&h[j]>=l[i])//若有j>=0且l[i]>h[j]时一对匹配成功;   j--;   if(j<0)   return ;        }   }
int main() {
   int t;    scanf("%d",&t);    while(t--)    {
      scanf("%d",&N);    M=0;    for(int i=0;i<2;i++)    {
      for(int j=0;j

转载于:https://www.cnblogs.com/hebozi/archive/2012/08/05/2623697.html

你可能感兴趣的文章
android中不同版本兼容包的区别
查看>>
Static 与 new 的问题【待解决】
查看>>
xml
查看>>
在 mvc4 WebApi 中 json 的 跨域访问
查看>>
敏捷开发文章读后感
查看>>
xposed获取context 的方法
查看>>
html5 canvas 图像处理
查看>>
He who hesitates is Lost
查看>>
php中引用&的真正理解-变量引用、函数引用、对象引用
查看>>
关于<form> autocomplete 属性
查看>>
OutOfMemory
查看>>
LeetCode:组合总数III【216】
查看>>
Thinkphp框架回顾(三)之怎么实现平常的sql操作数据库
查看>>
虚函数的效率问题
查看>>
POJ 1860 Currency Exchange(SPFA 判断有无“正”环)
查看>>
广告地址屏蔽
查看>>
收缩SqlServer数据库日记方法
查看>>
每日英语:15 places to find inspiration
查看>>
学习方法--提问
查看>>
【转】每天一个linux命令(3):pwd命令
查看>>