NYOJ 904 search 二分查找
search
- 描述
-
游戏积分的排行榜出来了,小z想看看得某个积分的人是谁。但是由于人数很多,他自己找很浪费时间,所以他想请你帮忙写一个程序,能快速的帮他找到他想要找的人
- 输入
-
多组测试数据,第一行有一个数T,表示有T组测试数据(T<=50)
第二行有两个数n和m(1<=n,m<=10000),n表示有n个人,m表示有m次查询
接下来n行,输入每个人的名字(长度小于10)和积分num(0<=num<=10^8),
接下来m行,每个数表示要查询的积分(每次查询一定有结果) - 输出
- 输出对应积分的人的名字(如果有多个人的积分相同,则输出最前面的那个)
- 样例输入
-
1 5 3 zhangsan 2 qianxiao 5 liuqiang 2 wangwu 1 lisi 3 2 1 3
- 样例输出
-
zhangsan wangwu lisi
解题思路:先按照积分从小到大排序,然后二分查找要查找的积分,判断这个人的积分和他前面的那个人的积分是否相同。如果不同,输出这个人的名字;否则,说明这个人不是第一个获得这个积分的人,再接着二分,直到找到一个不同的,输出即可。
#include<stdio.h> #include<string.h> #include<algorithm> using namespace std; struct score {char name[11];int sco; }a[10005]; bool comp(score a1,score a2) {return a1.sco < a2.sco; } int Binary_search(int l, int r, int k) {while(l < r){int mid = (l + r) / 2;if(a[mid].sco > k)r = mid;else if(a[mid].sco < k)l = mid+1;else{if(a[mid].sco == a[mid - 1].sco)r = mid;elsereturn mid;}} } int main() {int t, n, m, i, k;scanf("%d",&t);while(t--){scanf("%d%d",&n,&m);for(i = 0; i < n; i++)scanf("%s%d",a[i].name,&a[i].sco);stable_sort(a,a+n,comp);for(i = 0; i < m; i++){scanf("%d",&k);int p = Binary_search(0,n,k);printf("%s\n",a[p].name);}}return 0; }
NYOJ 904 search 二分查找相关推荐
- 算法导论第2章(3) 二分查找 binary search
二分查找(分治法). 二分查找也是一种分治法的实现,每一次查找将数据分为两个部分,问题规模都减小一半.这样查找的时间复杂度为logN.因为其实查找过程建立了一棵有N个节点的二叉树,查找次数是这棵树的高 ...
- Java数据结构与算法——线性查找 二分查找 插值查找
1.线性查找 有一个数列: {1,8, 10, 89, 1000, 1234} ,判断数列中是否包含此名称[顺序查找] 要求: 如果找到了,就提示找到,并给出下标值. package com.szh. ...
- 笔试算法题(58):二分查找树性能分析(Binary Search Tree Performance Analysis)
议题:二分查找树性能分析(Binary Search Tree Performance Analysis) 分析: 二叉搜索树(Binary Search Tree,BST)是一颗典型的二叉树,同时任 ...
- leetcode 二分查找 Search in Rotated Sorted ArrayII
Search in Rotated Sorted Array II Total Accepted: 18500 Total Submissions: 59945My Submissions Follo ...
- 二分查找树性能分析(Binary Search Tree Performance Analysis)
经典算法系(21)-二分查找树性能分析(Binary Search Tree Performance Analysis)https://www.douban.com/note/221942390/ ...
- SAP ABAP二分查找(binary search)实际问题的深度分析
在维护公司SAP的过程中,遇到一个问题,困扰了很久! 简单描述一下问题:(为了不牵扯公司业务,这是抽取问题)将主要的三个字段 存在一个内表TAB2,如图所示: 需要强调一下,真是的内表比TAB2要多很 ...
- ABAP性能优化之使用二分查找(Binary Search)选项
READ命令使用顺序查找数据表,这会降低处理速度.取而代之,使用binary search的附加命令,可以使用二分查找算法,可以帮助加快内表查找速度. 在使用binary search之前 必须首先将 ...
- SAPABAP性能优化技巧—使用二分查找(Binary Search)选项
READ命令使用顺序查找数据表,这会降低处理速度.取而代之,使用binary search的附加命令,可以使用二分查找算法,可以帮助加快内表查找速度. 在使用binary search之前必须首先将内 ...
- 八、二分查找(Binary Search)
一.概述 二分查找(Binary Search,也称折半查找)--针对有序数据集合的查找算法 1.基本思想 类似分治思想,每次都通过跟区间的中间元素进行对比,将代查找的区间缩小为之前的一半,直到找到要 ...
最新文章
- gis怎么通过水库划分子流域_到底是谁在革GIS的命?
- Java双向链表快速排序_双向链表的插入,删除,以及链表的快速排序
- 【过程记录 】windows和ubuntu两台电脑局域网进行socket通信收发数据和传输文件
- boost::lambda模块实现boost::function 进行测试
- “速课小龙”项目冲刺3
- 力扣-543. 二叉树的直径
- Python迭代器(Iterator)
- 如何删除U盘中的System Volume Information文件夹?
- 计算机无法识别出硬件,电脑检测不到硬盘,电脑硬件故障检测工具
- Python爬取豆瓣电影短评
- webview卡顿_分享三个小技巧,微信卡顿的人千万不要错过哦
- C语言 unsigned signed void 关键字和 类型修饰符
- Android各种img文件作用以及系统启动过程
- python金字塔函数_Pyramid Python量化学习笔记:API的基本方法,金字塔
- 单不单身一样可以过情人节
- 库卡示教器卡死“正在读取驱动器”
- python中的complex是什么意思_Python 内置函数complex详解,pythoncomplex
- Tectonic 1.7升级了容器编排平台,提供了新的监控功能并支持微软Azure
- 1亿美元营收以上127家,最新PCB百强企业名单出炉
- 什么是上网行为管理?