匹配

(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一定为升序排列。

【Solution】

  千万别想复杂!!!!!千万别想复杂!!!!!千万别想复杂!!!!!

  首先用两个指针L、R分别指向黄色积木当前砖块和蓝色积木当前砖块,初始指向第一个积木。如果当前黄色积木符合蓝色积木要求,则记录答案并使LR指针都往后移一位。如果当前蓝色积木长度比当前黄色积木长度减X还要小,那么只后移R指针。如果当前蓝色积木长度比当前黄色积木长度加Y还要大,那么之后移L指针。

  AC代码:

 1 #include <cstdio>
 2 int N,M,X,Y,L=1,R=1;
 3 int ylw[100010],ble[100010];
 4 long long ans;
 5 int main(){
 6     scanf("%d%d%d%d",&N,&M,&X,&Y);
 7     for(int i=1;i<=N;++i) scanf("%d",&ylw[i]);
 8     for(int i=1;i<=M;++i) scanf("%d",&ble[i]);
 9     while(L<=N&&R<=N){
10         if(ble[R]>ylw[N]+Y||ble[M]<ylw[1]-X) break;//特判掉极端情况
11         if(ble[R]>=ylw[L]-X&&ble[R]<=ylw[L]+Y) {++ans;++L;++R;continue;}
12         if(ble[R]<ylw[L]-X) {++R;continue;}
13         if(ble[R]>ylw[L]+Y) {++L;continue;}
14         ++L; ++R;
15     }
16     printf("%I64d",ans);
17     return 0;
18 }

转载于:https://www.cnblogs.com/reddest/p/5994898.html

【NOIP模拟赛】【乱搞AC】【贪心】【模拟】匹配相关推荐

  1. 1785 数据流中的算法(模拟,乱搞)

    1785 数据流中的算法 基准时间限制:1.5 秒 空间限制:131072 KB 分值: 20 

  2. 【2018.3.17】模拟赛之三-ssl1863jzoj1367 俄罗斯方块【模拟】

    正题 链接 需要纪中OJ账号 有7种方块 有n列,给出每列的方块高度,求一种方块所有方面都落地的方案数 输入输出(需要自取) Input 第一行为二个整数C和P,1 ≤ C ≤ 100, 1 ≤ P ...

  3. 【老李的模拟赛】【#4】【2014-08-09】

    水题一坨~ 数据+题目:http://pan.baidu.com/s/1gdCFjN1 T1 求 \sum_i^a i^b %10000 用循环节完事AC #include<cstdio> ...

  4. NOI.AC NOIP模拟赛 第六场 游记

    NOI.AC NOIP模拟赛 第六场 游记 queen 题目大意: 在一个\(n\times n(n\le10^5)\)的棋盘上,放有\(m(m\le10^5)\)个皇后,其中每一个皇后都可以向上.下 ...

  5. 校内hu测(10.6T2,T3)(乱搞+贪心+模拟)

    @liu_runda T2.便(then) [题目描述] 给出一个R*C的棋盘.共有R行C列,R*C个格子.现要在每个格子都填一个非负整数.使得任意一个2*2的正方形区域都满足这样的性质:左上角的数字 ...

  6. P5594 模拟赛(乱搞)

    水题就不放传送门了 直接二维数组乱搞 code: #include<bits/stdc++.h> #define MAXN 1005 #define reg register #defin ...

  7. JZOJ(中山纪念中学) 2018.02.02【NOIP普及组】模拟赛D组

    本次题目:2018.02.02[NOIP普及组]模拟赛D组 第一题 题目:第一题 公牛数字 题意: 求题目给出两个数字的乘积 分析: 这题明显只是考察学生的高精可我居然没做对,只要多练习几次,即可AC ...

  8. 【HHHOJ】NOIP模拟赛 捌 解题报告

    点此进入比赛 得分: \(30+30+70=130\)(弱爆了) 排名: \(Rank\ 22\) \(Rating\):\(-31\) \(T1\):[HHHOJ260]「NOIP模拟赛 捌」Dig ...

  9. jyzy noip模拟赛5.22-2

    不知道哪来的题 jyzy noip模拟赛5.22-2 样例输入 1 2 3 4 样例输出 0.200000000000000 数据 |a|,|b|,|c|,|d|<=1e9 很多大佬迅速想到二分 ...

最新文章

  1. numpy使用[]语法索引二维numpy数组中倒数N列数据列的数值内容(accessing the last N columns in numpy array)
  2. matlab 二阶非线性微分方程组,二阶非线性常微分方程的打靶法matlab实现.doc
  3. linux wc命令参数及用法详解
  4. Linux零基础初级教程
  5. JPA的entityManager的find、getReference、persisit、remove方法的使用
  6. 练习一:GitHub Desktop下载及使用
  7. 搞ACM的你伤不起(转)
  8. JAVA获取图片的宽、高和大小
  9. [读后感] 20170630 产品经理米衙的感悟
  10. Makefile之 .PHONY 作用
  11. 最新消息,我的Zcash钱包收到鱼池的ZEC打款了
  12. 人人开源(后台代码、前端项目、代码自动生成)
  13. matlab gui 分辨率,MATLAB GUI控件大小和字体适应界面和电脑分辨率
  14. linux设置双屏拼接_Linux下双屏显示设置
  15. em表示什么长度单位_CSS的长度单位(em)与em标签
  16. C#习题——三角形或者长方形的边长,计算其周长和面积
  17. Android reckon 控制项目打包版本
  18. ssm毕设项目小型超市货物仓储管理系统w8wry(java+VUE+Mybatis+Maven+Mysql+sprnig)
  19. 计算机文件查看隐藏文件,电脑隐藏文件怎么显示啊,明明点了显示所有文件,按了确定后,又恢复了原来样子,为什么啊...
  20. pve万兆网卡驱动_家庭万兆方案性价比之选,10G网速不是梦!战在当下,布局未来!...

热门文章

  1. 一键如何完成多张静态图合成GIF图?
  2. 秋招-滴滴-网约车技术-java开发
  3. Windows中安装并配置Maven详细教程
  4. 论文翻译:Pose estimation at night in infrared images using a lightweight multi-stage attention network
  5. 零基础入门微信小程序系列之——校园跑腿
  6. Python十二章处理Excel电子表格
  7. 求网络号,广播地址,第一个可用ip,最后一个可用ip。可用ip总数
  8. 【安全与风险】计算机系统基本资源安全
  9. C++实验七——类的继承(1)
  10. 含有泛型的 JSON 反序列化问题