生活随笔
收集整理的這篇文章主要介紹了
nyoj904 search
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
search
時(shí)間限制:
1000ms ?|? 內(nèi)存限制:
65535KB 難度:
2
描述
游戲積分的排行榜出來了,小z想看看得某個(gè)積分的人是誰。但是由于人數(shù)很多,他自己找很浪費(fèi)時(shí)間,所以他想請(qǐng)你幫忙寫一個(gè)程序,能快速的幫他找到他想要找的人 輸入多組測(cè)試數(shù)據(jù),第一行有一個(gè)數(shù)T,表示有T組測(cè)試數(shù)據(jù)(T<=50)
第二行有兩個(gè)數(shù)n和m(1<=n,m<=10000),n表示有n個(gè)人,m表示有m次查詢
接下來n行,輸入每個(gè)人的名字(長(zhǎng)度小于10)和積分num(0<=num<=10^8),
接下來m行,每個(gè)數(shù)表示要查詢的積分(每次查詢一定有結(jié)果)
輸出輸出對(duì)應(yīng)積分的人的名字(如果有多個(gè)人的積分相同,則輸出最前面的那個(gè))樣例輸入 1
5 3
zhangsan 2
qianxiao 5
liuqiang 2
wangwu 1
lisi 3
2
1
3 樣例輸出 zhangsan
wangwu
lisi 來源原創(chuàng)上傳者ACM_馬振陽提醒:注意細(xì)節(jié),這道題因?yàn)橐粋€(gè)小問題,卡了好久。#include<iostream>
#include<stdio.h>
#include<algorithm>
#include<cstring>
using namespace std;
/*結(jié)構(gòu)體*/
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) //判定條件,,,,,沒太在意細(xì)節(jié)就是卡在了這里 k-=1;printf("%s\n",game[k].name);}}return 0;
} 題中stable_sort(game,game+n,cmp);為穩(wěn)定排序,需要調(diào)用cmp;具體介紹點(diǎn)擊下面鏈接
?
http://blog.csdn.net/leolin_/article/details/6652406
?
總結(jié)
以上是生活随笔為你收集整理的nyoj904 search的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。
如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。