【NOIP模拟赛】【乱搞AC】【贪心】【模拟】匹配
匹配
(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代码:
#include <cstdio>
int N,M,X,Y,L=,R=;
int ylw[],ble[];
long long ans;
int main(){
scanf("%d%d%d%d",&N,&M,&X,&Y);
for(int i=;i<=N;++i) scanf("%d",&ylw[i]);
for(int i=;i<=M;++i) scanf("%d",&ble[i]);
while(L<=N&&R<=N){
if(ble[R]>ylw[N]+Y||ble[M]<ylw[]-X) break;//特判掉极端情况
if(ble[R]>=ylw[L]-X&&ble[R]<=ylw[L]+Y) {++ans;++L;++R;continue;}
if(ble[R]<ylw[L]-X) {++R;continue;}
if(ble[R]>ylw[L]+Y) {++L;continue;}
++L; ++R;
}
printf("%I64d",ans);
return ;
}
【NOIP模拟赛】【乱搞AC】【贪心】【模拟】匹配的更多相关文章
- [NOIP模拟赛][并没有用二分][乱搞AC]
圆圈舞蹈 [问题描述] 熊大妈的奶牛在时针的带领下,围成了一个圆圈跳舞.由于没有严格的教育,奶牛们之间的间隔不一致. 奶牛想知道两只最远的奶牛到底隔了多远.奶牛A到B的距离为A顺时针走和逆时针走,到达 ...
- 【NOIP模拟赛】【乱搞AC】【奇技淫巧】【乘法原理】回文串计数
回文串计数 (calc.pas/calc.c/calc.cpp) [题目描述] 虽然是一名理科生,Mcx常常声称自己是一名真正的文科生.不知为何,他对于背诵总有一种莫名的热爱,这也促使他走向了以记忆量 ...
- 【NOIP模拟赛】就 反悔贪心
biubiu~~~ 这道题,考场上上来就dp然后发现怎么优化也不行.............最后发现是贪心............. 正解:带反悔的贪心,原理是,假设我们现在得到了取i个的最优解那么我 ...
- 5.5 省选模拟赛 B Permutation 构造 贪心
LINK:Permutation 对于这种构造神题 我自然是要补的.为啥就我没想出来哇. 30分还是很好写的 注意8!实际上很小 不需要爆搜 写bfs记录状态即可.至于判断状态是否出现与否 可以开ma ...
- 6.29 省选模拟赛 坏题 AC自动机 dp 图论
考场上随手构造了一组数据把自己卡掉了 然后一直都是掉线状态了. 最后发现这个东西不是subtask -1的情况不多 所以就没管无解直接莽 写题有点晚 故没调出来.. 考虑怎么做 容易想到建立AC自动机 ...
- [CSP-S模拟测试]:字符交换(贪心+模拟)
题目传送门(内部题136) 输入格式 输入文件第一行为两个正整数$n,k$,第二行为一个长度为$n$的小写字母字符串$s$. 输出格式 输出一个整数,为对字符串$s$进行至多$k$次交换相邻字符的操作 ...
- NOI.AC: NOIP2018 全国模拟赛习题练习
闲谈: 最后一个星期还是不浪了,做一下模拟赛(还是有点小虚) #30.candy 题目: 有一个人想买糖吃,有两家商店A,B,A商店中第i个糖果的愉悦度为Ai,B商店中第i个糖果的愉悦度为Bi 给出n ...
- NOIp模拟赛二十八
(这是NOIp模拟赛?应该是NOI模拟赛不小心加了个p) 嗯,假装这是正经的NOIp模拟赛,从今天开始也写写题解吧(这几天被虐的惨惨) 今日情况:8+50+0=58 A题输出样例,B题正解写挂,C题不 ...
- [NOI.AC省选模拟赛3.30] Mas的童年 [二进制乱搞]
题面 传送门 思路 这题其实蛮好想的......就是我考试的时候zz了,一直没有想到标记过的可以不再标记,总复杂度是$O(n)$ 首先我们求个前缀和,那么$ans_i=max(pre[j]+pre[i ...
随机推荐
- python学习总结----时间模块 and 虚拟环境(了解)
time - sleep:休眠指定的秒数(可以是小数) - time:获取时间戳 # 获取时间戳(从1970-01-01 00:00:00到此刻的秒数) t = time.time() print(t ...
- LeetCode-N皇后
LeetCode-N皇后 n 皇后问题研究的是如何将 n 个皇后放置在 n×n 的棋盘上,并且使皇后彼此之间不能相互攻击. ...
- sharePreference的几个重点
一. SharePreferences是用来存储一些简单配置信息的一种机制,使用Map数据结构来存储数据,以键值对的方式存储,采用了XML格式将数据存储到设备中,文件存放在/data/data/&l ...
- vmware设置静态ip(复制)
一.安装好虚拟后在菜单栏选择编辑→ 虚拟网络编辑器,打开虚拟网络编辑器对话框,选择Vmnet8 Net网络连接方式,随意设置子网IP,点击NAT设置页面,查看子网掩码和网关,后面修改静态IP会用到. ...
- PHP面向对象 封装与继承
知识点: PHP封装三个关键词: 一.public 公有的,被public修饰的属性和方法,对象可以任意访问和调用 二.private 私有的,被private修饰的属性和方法,只能在类内部的方法可以 ...
- ie6中margin失效问题
在div的外面添加父级div并设置 padding-bottom: 10px;! <!DOCTYPE html><html><head lang="en&quo ...
- scrapy递归下载网站
# encoding: utf-8 import os import re import subprocess import sys import chardet import scrapy fro ...
- Linux下Nginx使用
1. 安装 CentOS 7上Nginx的安装和启动方法如下 # yum install nginx # firewall-cmd --permanent --zone=public --add-se ...
- 【原创】Linux环境下的图形系统和AMD R600显卡编程(10)——R600显卡的3D引擎编程
3D图形处理流水线需要流经多个硬件单元才能得到最后的渲染结果,流水线上的所有的硬件单元必须被正确编程,才能得到正确的结果. 总体上看,从图形处理流水线的源头开始,需要准备好vertex和index,在 ...
- VS2013 生成sqlite3动态连接库及sqlite3.dll的调用
一,生成sqlite3动态连接库1,去sqlite官网上下载最近的sqlite源码包,解压后得到四个文件:shell.c,sqlite3.c,sqlite3.h,sqlite3ext.h此处还需要sq ...