有一口井,井的高度为N,每隔1个单位它的宽度有变化。现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去)。
盘子有几种命运:1、掉到井底。2、被卡住。3、落到别的盘子上方。
盘子的高度也是单位高度。给定井的宽度和每个盘子的宽度,求最终落到井内的盘子数量。
如图井和盘子信息如下:
井:5 6 4 3 6 2 3
盘子:2 3 5 2 4
最终有4个盘子落在井内。
本题由     @javaman   翻译。

Input第1行:2个数N, M中间用空格分隔,N为井的深度,M为盘子的数量(1 <= N, M <= 50000)。 
第2 - N + 1行,每行1个数,对应井的宽度Wi(1 <= Wi <= 10^9)。 
第N + 2 - N + M + 1行,每行1个数,对应盘子的宽度Di(1 <= Di <= 10^9)Output输出最终落到井内的盘子数量。Sample Input

7 5
5
6
4
3
6
2
3
2
3
5
2
4

Sample Output

4

题解:这道题首先是先输入的宽度是在最底下,由下往上,,因为下一层的能通过的宽度取决于当下与上一层的宽度的较小值,所以可以先把宽度重新设定比如5 6 4 3 6 2 3 就应该是5 5 4 3 3 2 2 ,

正好变成有序的 然后开始比较要进来的木板与井的宽度,决定能落在哪里;盘子每次到达什么地方,也就是在这个有序的序列中第一个 >= 盘子的宽度的地方,然后就让这个位置加+1,下次再从这个位置+1开始到最后查找,也就是二分查找 说的有点不清楚,看代码,

只要掌握lower_bound()返回一个 iterator 它指向在[first,last)标记的有序序列中可以插入value,而不会破坏容器顺序的第一个位置,而这个位置标记了一个不小于value 的位置。

#include <iostream>
#include <cstdio>
#include <algorithm>
#include <cstdlib>
using namespace std;
const int MAXN = 50000+5;
const int INF = 1e9+100;
int W[MAXN], D[MAXN];
int main()
{int n,m;while(~scanf("%d%d",&n,&m)){W[n+1] = INF;for(int i=0; i<n; i++){scanf("%d",&W[n-i]);W[n-i] = min(W[n-i+1],W[n-i]);//调整井的宽度,变成一个有序的}for(int i=0; i<m; i++)scanf("%d",&D[i]);int ans = 0, tp = 1;for(int i=0; i<m; i++){int tmp = lower_bound(W+tp, W+n+1, D[i])-W;if(tmp == n+1)break;tp = tmp+1;ans++;}cout<<ans<<endl;}return 0;
}

51Nod - 1279相关推荐

  1. 51nod 1279搬盘子

    1279 扔盘子 基准时间限制:1 秒 空间限制:131072 KB 分值: 10 难度:2级算法题 收藏 关注 有一口井,井的高度为N,每隔1个单位它的宽度有变化.现在从井口往下面扔圆盘,如果圆盘的 ...

  2. 【51Nod - 1279】 扔盘子(思维)(on-p会超时)

    题干: 有一口井,井的高度为N,每隔1个单位它的宽度有变化.现在从井口往下面扔圆盘,如果圆盘的宽度大于井在某个高度的宽度,则圆盘被卡住(恰好等于的话会下去). 盘子有几种命运:1.掉到井底.2.被卡住 ...

  3. 51nod 1617 奇偶数组

    传送门 回来看一眼51nod,发现自己掉到rank4了,赶紧切道题回rank3. 一眼不会做,这种东西应该慢慢找规律吧--然后看到数据范围其实比较小,应该是单次log的,那是不是可以分治啊. #inc ...

  4. 51NOD 1773:A国的贸易——题解

    http://www.51nod.com/onlineJudge/questionCode.html#!problemId=1773 参考1:FWT讲解 https://www.cnblogs.com ...

  5. 51nod 1040:最大公约数之和(数论)

    题目链接:https://www.51nod.com/onlineJudge/questionCode.html#!problemId=1040 给出一个n,求1-n这n个数,同n的最大公约数的和. ...

  6. (DP)51NOD 1183 编辑距离

    编辑距离,又称Levenshtein距离(也叫做Edit Distance),是指两个字串之间,由一个转成另一个所需的最少编辑操作次数.许可的编辑操作包括将一个字符替换成另一个字符,插入一个字符,删除 ...

  7. 斜率小于0的连线数量 51Nod - 1107 (树状数组+离散化)

    二维平面上N个点之间共有C(n,2)条连线.求这C(n,2)条线中斜率小于0的线的数量. 二维平面上的一个点,根据对应的X Y坐标可以表示为(X,Y).例如:(2,3) (3,4) (1,5) (4, ...

  8. 51Nod 1003 阶乘后面0的数量(数学,思维题)

    1003 阶乘后面0的数量 基准时间限制:1 秒 空间限制:131072 KB 分值: 5         难度:1级算法题 n的阶乘后面有多少个0? 6的阶乘 = 1*2*3*4*5*6 = 720 ...

  9. 51nod 1270 数组的最大代价

    1270 数组的最大代价 题目来源: HackerRank 基准时间限制:1 秒 空间限制:131072 KB 分值: 20 难度:3级算法题 数组A包含N个元素A1, A2......AN.数组B包 ...

最新文章

  1. 算力超越 iPhone,芯片堪比Mac,网友:“买来能干啥?”
  2. python写游戏脚本-python实现简单贪吃蛇游戏
  3. Cow Toll Paths(floyd变形)
  4. [JSON].valueOf( keyPath )
  5. qt中如何模拟按钮点击_如何快速在 Shopify 中加入按钮
  6. tensorflow第十一步CNN表情识别
  7. elk 安装与所遇问题
  8. 个人计算机的未来,未来的个人电脑将会成为光子计算机的天下
  9. python安装与开发环境搭建实验总结_python开发环境安装配置
  10. OFFICE技术讲座:影响文字效果的四个因素是哪些
  11. 【路径规划】基于matlab遗传结合模拟退火算法仓库拣货小车最优路径规划【含Matlab源码 649期】
  12. 阿里巴巴 EasyExcel (web版) 上传与下载(超详细) Excel上传下载
  13. 大行bya412和java513_真实解密大行bya412和k3区别在哪里?哪款最好?老司机透漏评测...
  14. input隐藏域传值
  15. 云服务器win10系统搭建ftp,win10系统搭建ftp服务器
  16. Rust Async: smol源码分析-Executor篇
  17. Hack the box靶机 October
  18. 新酒店图集 | 北京大兴希尔顿、昆明喜来登和昆明德尔塔、银川JW万豪与银川万怡双品牌酒店陆续开业...
  19. ag-grid with web api
  20. 汽车尾灯控制电路代码

热门文章

  1. 显卡之黄金宝典(转东转西)
  2. Python操作Excel造成的科学记数法问题
  3. 2020.08.09网易云数据分析师提前批笔试
  4. strcasecmp php,php字符比较函数similar_text、strnatcmp与strcasecmp用法分析
  5. c语言编程IP地址转换,用C语言将二进制转换为IP地址
  6. python抽签代码_python3 实现口罩抽签的功能
  7. 【Http Referer】
  8. 阅读心得6:《首次公开!菜鸟弹性调度系统的架构设计》
  9. 瑜伽教程: 一个跨平台的布局引擎
  10. Go语言全栈开发:模板语言