匹配(match.pas/match.c/match.cpp)

[题目描述]

到了新的学期,Mcx痛苦的发现通用技术课居然是有实验课的,这样的话他就不得不放弃写作业的想法而去做一件类似于搭积木的事情。一次实验课上,他发现所给的材料有许许多多的长积木,其中黄色的有n条,第i条的长度为Ai;蓝色的有m条,第j条的长度为Bj。于是他想:这些积木可以组成多少对导轨呢?每对导轨由一条黄色积木和一条蓝色积木组成,每条积木只能用一次。为了美观,当且仅当Ai– x <= Bj <= Ai + y的时候,两条积木才能组成一对导轨。x,y为给定的非负整数。

[题目输入]

第一行四个数n,m,x,y,具体含义见题目描述。

第二行n个数,第i个数表示第i条黄色积木的长度,每两个数之间有一个空格。

第三行m个数,第i个数表示第i条蓝色积木的长度,每两个数之间有一个空格。

[题目输出]

仅一行一个非负整数,表示所能组成的导轨对数的最大值。

[样例输入]

5 3 0 0

1 2 3 3 4

1 3 5

[样例输出]

2

[样例解释]

样例中x,y均为0,故只有当Ai=Bj的时候才能组成一对导轨。

方案为第一条黄色积木和第一条蓝色积木一组,第二条蓝色积木和第三或第四条黄色积木一组。

[数据范围]

50%的数据满足1<= n , m <= 1000

100%的数据满足1<= n , m <= 100000

100%的数据满足0<= x , y , Ai , Bi <= 10^9

100%的数据满足,Ai与Bi一定为升序排列。

分析:

拿到这道题,其实首先可以想到如果数据小,用匈牙利算法是可以跑下来的。但是很不巧,我不会。考虑别的做法,发现如果我们瞎基本贪心。好像可以做诶。接下来就是如果瞎基本贪心?很显然我们在这里如果每次都选择符合要求区间内最小值。由于序列成单调递增。那么我们可以保证,每次最先让前面的匹配。

假设Ai<=Aj 还有Bi<Bj 。而且保证Ai Aj与Bi Bj 都可以互相满足要求。那么如果我们Ai与Bj Aj与Bi匹配 这种方式与Ai与Bi Aj与Bj匹配这两种方式是完全一样的。那么我们可以选择有序 第二种方式 这样可以保证最优。(如果在这里的条件改变Ai不与Bj相匹配,那么第二种方式也是最优的。)(如果这里的条件再改变如果Ai与Aj只能与Bi匹配,那么两者只能择一)所以我们如果从头瞎基本贪心是可以保证最优解的。

放出代码:这里要注意边界判断与及时对循环终止。

#include<cstdio>
#include<algorithm>
using namespace std;
int A[100010],B[100010],n,m,x,y,ans;
int main()
{
freopen("match.in","r",stdin);
freopen("match.out","w",stdout);
scanf("%d%d%d%d",&n,&m,&x,&y);
for(int i=1;i<=n;++i)
scanf("%d",&A[i]);
for(int i=1;i<=m;++i)
scanf("%d",&B[i]);
int head;
for(int i=1;i<=m;++i)
{
if(B[i]>=A[1]-x){
head=i;
break;
}
}
int i=1;
while(i<=n)
{
while(1){
if(B[head]<A[i]-x){++head ;if(head>m)break; continue;}
if(B[head]>A[i]+y)break;
++ans;
++head;
break;
}
++i;
if(head>m)break;
}
printf("%d\n",ans);
fclose(stdin);
fclose(stdout);
return 0;
}

noip 模拟赛 匹配 //贪婪策略的更多相关文章

  1. NOIP模拟赛-2018.11.6

    NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...

  2. NOIP模拟赛-2018.11.5

    NOIP模拟赛 好像最近每天都会有模拟赛了.今天从高二逃考试跑到高一机房,然而高一也要考试,这回好像没有拒绝的理由了. 今天的模拟赛好像很有技术含量的感觉. T1:xgy断句. 好诡异的题目,首先给出 ...

  3. NOIP模拟赛20161022

    NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...

  4. contesthunter暑假NOIP模拟赛第一场题解

    contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...

  5. NOIP模拟赛 by hzwer

    2015年10月04日NOIP模拟赛 by hzwer    (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...

  6. 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程

    数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...

  7. 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...

  8. 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...

  9. 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1

    题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...

随机推荐

  1. 关于最近的CSRF攻击

    摘要 最近公司内部爆出一大波页面没有加token校验,然后各路大神就开始进行CSRF攻击了.CSRF攻击:攻击者盗用了你的身份,以你的名义发送恶意请求.CSRF能够做的事情包括:以你名义发送邮件,发消 ...

  2. Web Essentials之通用功能

    返回Web Essentials功能目录 本篇目录 功能 快捷方式 WEIgnore 功能 通用功能应用于很多方面. 设置 所有的设置都可以在VS选择工具 -> 选项 -> Web Ess ...

  3. 算法:Astar寻路算法改进,双向A*寻路算法

    早前写了一篇关于A*算法的文章:<算法:Astar寻路算法改进> 最近在写个js的UI框架,顺便实现了一个js版本的A*算法,与之前不同的是,该A*算法是个双向A*. 双向A*有什么好处呢 ...

  4. 【Bugly技术干货】那些年我们用过的显示性能指标

    Bugly 技术干货系列内容主要涉及移动开发方向,是由 Bugly 邀请腾讯内部各位技术大咖,通过日常工作经验的总结以及感悟撰写而成,内容均属原创,转载请标明出处. 前言: 注:Google 在自己文 ...

  5. NSDate NSString相互转化

    时间戳是经常用到的,今天就总结一下 //设置转化格式 NSDateFormatter *formatter = [[NSDateFormatter alloc] init]; [formatter s ...

  6. Atitit 发帖机实现(4 )- usbQBM1601 gui操作标准化规范与解决方案attilax总结

    Atitit 发帖机实现(4 )- usbQBM1601 gui操作标准化规范与解决方案attilax总结 1.1. 根据gui的类型使用不同的gui调用api1 1.2. Script化1 1.3. ...

  7. fir.im Weekly - 可能是 iOS 审核最全面的解决方案

    ipv6 被拒绝,后台定位被拒绝--让很多国内 iOS 开发者心力交瘁.这是一份关于 iOS 审核的终极免费方案,作者iOSWang对最近iOS 审核被拒问题给出了比较全面的方案:Solve-App- ...

  8. salesforce 零基础学习(三十八)Translate 的使用(国际化处理)

    本篇参考:http://resources.docs.salesforce.com/200/17/en-us/sfdc/pdf/salesforce_workbench_cheatsheet.pdf ...

  9. Jenkins的系统设置

    1.登录Jenkins进入以下界面: 2.点击 系统管理 3.点击 系统设置 (下图的系统设置是已经设置好的) 4.这里设置主要设置 Jenkins URL (这里我是测试的所以使用默认的)与 邮件的 ...

  10. Python内建的对象列表

    Python内建的对象列表 刚写Python肯定会遇到这样的情况,想写些什么,但又不知从何写起... 在我看来问题在于我们不知道有什么东东可以拿来玩,这里列出Python的内建对象,稍微归类了一下,多 ...