nyoj904 search
来源:互联网 发布:北大青鸟云计算 编辑:程序博客网 时间:2024/04/28 19:36
search
时间限制:1000 ms | 内存限制:65535 KB
难度:2
- 描述
- 游戏积分的排行榜出来了,小z想看看得某个积分的人是谁。但是由于人数很多,他自己找很浪费时间,所以他想请你帮忙写一个程序,能快速的帮他找到他想要找的人
- 输入
- 多组测试数据,第一行有一个数T,表示有T组测试数据(T<=50)
第二行有两个数n和m(1<=n,m<=10000),n表示有n个人,m表示有m次查询
接下来n行,输入每个人的名字(长度小于10)和积分num(0<=num<=10^8),
接下来m行,每个数表示要查询的积分(每次查询一定有结果) - 输出
- 输出对应积分的人的名字(如果有多个人的积分相同,则输出最前面的那个)
- 样例输入
15 3zhangsan 2qianxiao 5liuqiang 2wangwu 1lisi 3213
- 样例输出
zhangsanwangwulisi
- 来源
- 原创
- 上传者
- ACM_马振阳
- 提醒:注意细节,这道题因为一个小问题,卡了好久。
#include<iostream>#include<stdio.h>#include<algorithm>#include<cstring>using namespace std;/*结构体*/ struct node{char name[15];int v;}game[10010];int cmp(node a,node b){return a.v<b.v;}/*二分查找*/int Binsearch(int l,int h,int k){int mid;while(l<=h){mid=(l+h)/2;if(k==game[mid].v)return mid;else if(k>game[mid].v)l=mid+1;else h=mid-1;} } int main(){int T,m,n,i,k,j;scanf("%d",&T);while(T--){cin>>n>>m;for(i=0;i<n;i++)scanf("%s %d",&game[i].name,&game[i].v);stable_sort(game,game+n,cmp);for(i=0;i<m;i++){scanf("%d",&j);k=Binsearch(0,n-1,j);while(k>0&&game[k-1].v==j) //判定条件,,,,,没太在意细节就是卡在了这里 k-=1;printf("%s\n",game[k].name);}}return 0;}
题中stable_sort(game,game+n,cmp);为稳定排序,需要调用cmp;具体介绍点击下面链接
- http://blog.csdn.net/leolin_/article/details/6652406
0 0
- nyoj904 search
- Search
- search
- search
- search
- search
- Search
- search
- Search
- Search
- search
- search
- Search
- search
- search
- Search
- search
- Search
- 图的邻接表建立思想
- C++基础——bitset与string的相互转化
- MySql之按周,按月,按日分组统计数据
- GIS相关的博客
- Stem-and-Leaf Plot in R
- nyoj904 search
- 接手项目准备
- 小议linux中的软链接------顺便谈谈为什么编译有时会出现cannot find -lssl, cannot find -lcrypto
- mysql之分组 取前二
- Elasticsearch 基本操作
- FTP两种工作模式:主动模式(Active FTP)和被动模式(Passive FTP)
- 关于EnumerateObjectsUsingBlock和for-in之间的较量
- 如何挑选适合的前端框架?
- 菜鸟猿大战Java之线程初接触