zoukankan      html  css  js  c++  java
  • 5_1 大理石在哪儿(UVa10474)<排序与查找>

    Raju和Meena喜欢玩弹珠,他们有许多上面有号码的弹珠。一开始时,Raju按照弹珠上面的号码由小到大排成一列,然后Meena会要求Raju找出某个号码的第一颗弹珠所在的位置。她会算1…2…3…,如果Raju答对了,他就得1分,否则Meena得1分。玩了多次之后谁的得分多谁就赢了。今天你有机会扮演Raju的角色。由于你们都是很聪明的小孩,你会用电脑来计算,而Meena则写了一个程序来检查你花多少时间来回答所有的问题。

    【输入】

    输入含有多组测试数据,每组测试数据的第一列有2个正整数N、Q,N代表弹珠的数目,Q代表对于此组测试数据Meena问的问题的数目。接下来的N列每列有一个整数,代表这N个弹珠上的号码(未经排序)。在接下来的Q列每列有一个整数代表Meena所问的问题(球的号码)。所有输入的数字都不会大于10000,且没有负的。
    当N=0,Q=0时代表输入结束。请参考样例输入。

    【输出】

    对每组测试数据请先输出一列,这是第几组测试数据。对每组测试数据Meena所问的每个问题输出一列,输出格式如下其中之一:
    •x found at y如果第一个号码为x的弹珠在位置y被发现(位置从1开始算)
    •x not found如果找不到号码为x的弹珠
    输出格式请参考样例输出。

    【样列输入】

    4 1
    2
    3
    5
    1
    5
    5 2
    1
    3
    3
    3
    1
    2
    3
    0 0

    【样列输出】

    CASE# 1:
    5 found at 4
    CASE# 2:
    2 not found
    3 found at 3

    【分析与说明】本题考察sort函数和lower_bound的用法,只要理解题中的含义,在利用这两个函数,这题就容易解决了。而sort大家已经很熟悉了,所以这里重点介绍一下lower_bound的用法(作用是查找“大于或等于x的第一个位置”):函数lower_bound()在first和last中的前闭后开区间进行二分查找,返回大于或等于val的第一个元素位置。如果所有元素都小于val,则返回last的位置。

    举例如下:
    一个数组number序列为:4,10,11,30,69,70,96,100.设要插入数字3,9,111.pos为要插入的位置的下标
    则(注:number为数组名)
    pos = lower_bound( number, number + 8, 3) - number,pos = 0.即number数组的下标为0的位置。
    pos = lower_bound( number, number + 8, 9) - number, pos = 1,即number数组的下标为1的位置(即10所在的位置)。
    pos = lower_bound( number, number + 8, 111) - number, pos = 8,即number数组的下标为8的位置(但下标上限为7,所以返回最后一个元素的下一个元素)。

  • 相关阅读:
    有个扫描二维码的扩展,还不错
    js实现html截图生成图片
    微信小程序左右滑动切换图片酷炫效果(附效果)
    谷歌扩展程序设置ajax请求允许跨域(极少人知道的解决方案)
    h5页面使用sessionStorage滚动到上次浏览器位置《原创》
    ajax返回json数组遍历添加到html
    解决微信内置浏览器屏蔽下载链接问题
    解决html5新标签【placeholder】低版本浏览器下不兼容问题
    Web前端知识技能大汇总
    酷炫的页面滚动切换动画效果
  • 原文地址:https://www.cnblogs.com/jjzzx/p/5362331.html
Copyright © 2011-2022 走看看