noip 模拟赛 匹配 //贪婪策略
匹配(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 模拟赛 匹配 //贪婪策略的更多相关文章
- NOIP模拟赛-2018.11.6
NOIP模拟赛 今天想着反正高一高二都要考试,那么干脆跟着高二考吧,因为高二的比赛更有技术含量(我自己带的键盘放在这里). 今天考了一套英文题?发现阅读理解还是有一些困难的. T1:有$n$个点,$m ...
- NOIP模拟赛-2018.11.5
NOIP模拟赛 好像最近每天都会有模拟赛了.今天从高二逃考试跑到高一机房,然而高一也要考试,这回好像没有拒绝的理由了. 今天的模拟赛好像很有技术含量的感觉. T1:xgy断句. 好诡异的题目,首先给出 ...
- NOIP模拟赛20161022
NOIP模拟赛2016-10-22 题目名 东风谷早苗 西行寺幽幽子 琪露诺 上白泽慧音 源文件 robot.cpp/c/pas spring.cpp/c/pas iceroad.cpp/c/pas ...
- contesthunter暑假NOIP模拟赛第一场题解
contesthunter暑假NOIP模拟赛#1题解: 第一题:杯具大派送 水题.枚举A,B的公约数即可. #include <algorithm> #include <cmath& ...
- NOIP模拟赛 by hzwer
2015年10月04日NOIP模拟赛 by hzwer (这是小奇=> 小奇挖矿2(mining) [题目背景] 小奇飞船的钻头开启了无限耐久+精准采集模式!这次它要将原矿运到泛光之源的矿 ...
- 大家AK杯 灰天飞雁NOIP模拟赛题解/数据/标程
数据 http://files.cnblogs.com/htfy/data.zip 简要题解 桌球碰撞 纯模拟,注意一开始就在袋口和v=0的情况.v和坐标可以是小数.为保险起见最好用extended/ ...
- 队爷的讲学计划 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的讲学计划 题解:刚开始理解题意理解了好半天,然后发 ...
- 队爷的Au Plan CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的Au%20Plan 题解:看了题之后觉得肯定是DP ...
- 队爷的新书 CH Round #59 - OrzCC杯NOIP模拟赛day1
题目:http://ch.ezoj.tk/contest/CH%20Round%20%2359%20-%20OrzCC杯NOIP模拟赛day1/队爷的新书 题解:看到这题就想到了 poetize 的封 ...
随机推荐
- 【CefSharp】 禁用右键菜单 与 控制弹出窗口的方式(限版本39.0.0.1)
这周没什么时间,一开始就在忙一些CefSharp的事情,Win10的研究就放了下来,CefSharp的资料挺少的,但好在是开源的,可以我们便宜的折腾.因为两个的内容都不多,我就合成一篇文章啦. 这还里 ...
- 解析ASP.NET Mvc开发之EF延迟加载
目录: 1)从明源动力到创新工场这一路走来 2)解析ASP.NET WebForm和Mvc开发的区别 3)解析ASP.NET Mvc开发之查询数据实例 ------------------------ ...
- 支持断点续传的文件上传插件——Huploadify-V2.0来了
之前仿造uploadify写了一个HTML5版的文件上传插件,没看过的朋友可以点此先看一下~得到了不少朋友的好评,我自己也用在了项目中,不论是用户头像上传,还是各种媒体文件的上传,以及各种个性的业务需 ...
- java提高篇(二)-----理解java的三大特性之继承
在<Think in java>中有这样一句话:复用代码是Java众多引人注目的功能之一.但要想成为极具革命性的语言,仅仅能够复制代码并对加以改变是不够的,它还必须能够做更多的事情.在这句 ...
- 汇编 int10h(转)
原文:http://www.cnblogs.com/magic-cube/archive/2011/10/19/2217676.html INT 10H 是由 BIOS 对屏幕及显示器所提供的服务程序 ...
- Node.js~sails.js~package.json的作用
回到目录 我们在sails框架进行node.js开发时,会涉及到项目的迁移,当迁移后可能你的module即丢失,这时,希望快速的安装所有的包包,可以使用下面命令 1 cd 你当前的sails项目 2 ...
- 技术往事:改变世界的TCP/IP协议(珍贵多图、手机慎点)
1.前言 作为应用层开发人员,接触最多的网络协议通常都是传输层的TCP(与之同处一层的另一个重要协议是UDP协议),但对于IP协议,对于应用程序员来说更多的印象还是IP地址这个东西,再往深一点也就很难 ...
- HTTP学习三:HTTPS
HTTP学习三:HTTPS 1 HTTP安全问题 HTTP1.0/1.1在网络中是明文传输的,因此会被黑客进行攻击. 1.1 窃取数据 因为HTTP1.0/1.1是明文的,黑客很容易获得用户的重要数据 ...
- 记一次裸迁 MySQL 经历
记一次裸迁MySQL经历 前言:博主企业有一台企业阿里云机器,因为安装了云锁,造成服务器动不动就给我所死服务器.(就是那种 chattr +i /bin/bash ,分分钟日死狗 )趁着周末,Boos ...
- TSql 分层和递归查询
1,需求分析 在TSql中实现层次结构,例如有这样一种数据结构,省,市,县,乡,村,如何使用一张表表示这种数据结构,并且允许是不对称的,例如,上海市是个直辖市,没有省份. create table d ...