当前位置: 首页 > news >正文

最大匹配+vector的应用

非诚勿扰

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<stdio.h>
#include<stdlib.h>
#include<vector>
#include<algorithm>
using namespace std;
vector<int> L[2];//L[0]存放男生中希望工资比女生高的,H[0]存放男生中希望工资比女生低的; 
vector<int> H[2];//L[1]存放女生中希望工资比男生高的,H[1]存放女生中希望工资男女生低的;
int N,M;
void math(vector<int> &l,vector<int> &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<N;j++)
   {
      int h;
   scanf("%d",&h);
   if(h<0)
   L[i].push_back(-h);
   else
   H[i].push_back(h);   
         }    
         sort(L[i].begin(),L[i].end());
         sort(H[i].begin(),H[i].end());
      }   
      math(L[0],H[1]);
      math(L[1],H[0]);
      printf("%d\n",M);
      L[0].clear();//清空;
      L[1].clear();
      H[0].clear();
      H[1].clear();
      M=0;
   }  
   system("pause");
   return 0;
}

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

相关文章:

  • 嵌入式成长轨迹32【嵌入式学习阶段】【ARM环境调试】【Linux Ubuntu其它环境调试】...
  • [转] 支持源文件索引符号服务器的构建和使用
  • 原创开源项目 -- HierarchyViewer for iOS(1)
  • 图片轮换效果 pixviewer.swf的使用
  • jquery 与 discuz 默认JS 冲突解决办法
  • sql查看表的锁并解锁
  • Centos5.5安装MONO2.10.8和Jexus 5.0开启Linux平台.net应用新篇章
  • C++中的const限定修饰符
  • 查看SqlServer表 索引 创建时间,修改时间。或者修改记录(转)
  • 在HTML中添加百度地图(有图)
  • 设计模式(4)之建造者模式
  • 保护模式下中断或异常示意图
  • java override overload
  • 多路访问网络中的挑战
  • 模拟系统提示框
  • [微信小程序] 使用ES6特性Class后出现编译异常
  • classpath对获取配置文件的影响
  • CSS实用技巧干货
  • Date型的使用
  • exif信息对照
  • GraphQL学习过程应该是这样的
  • Java 网络编程(2):UDP 的使用
  • JS数组方法汇总
  • Mithril.js 入门介绍
  • React 快速上手 - 06 容器组件、展示组件、操作组件
  • React 快速上手 - 07 前端路由 react-router
  • react-native 安卓真机环境搭建
  • Solarized Scheme
  • Sublime Text 2/3 绑定Eclipse快捷键
  • 初识MongoDB分片
  • 马上搞懂 GeoJSON
  • 推荐一款sublime text 3 支持JSX和es201x 代码格式化的插件
  • 找一份好的前端工作,起点很重要
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • ​LeetCode解法汇总518. 零钱兑换 II
  • ​ssh免密码登录设置及问题总结
  • #微信小程序(布局、渲染层基础知识)
  • #我与Java虚拟机的故事#连载06:收获颇多的经典之作
  • %3cli%3e连接html页面,html+canvas实现屏幕截取
  • (02)Hive SQL编译成MapReduce任务的过程
  • (14)Hive调优——合并小文件
  • (16)Reactor的测试——响应式Spring的道法术器
  • (4.10~4.16)
  • (done) 两个矩阵 “相似” 是什么意思?
  • (第8天)保姆级 PL/SQL Developer 安装与配置
  • (独孤九剑)--文件系统
  • (附源码)计算机毕业设计SSM基于健身房管理系统
  • (六)c52学习之旅-独立按键
  • (排序详解之 堆排序)
  • (三维重建学习)已有位姿放入colmap和3D Gaussian Splatting训练
  • (十三)Flask之特殊装饰器详解
  • (一)Thymeleaf用法——Thymeleaf简介
  • (转)Linux下编译安装log4cxx
  • (转)memcache、redis缓存
  • (转)socket Aio demo