首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

UVA - 11991 Easy Problem from Rujia Liu

2012-11-15 
UVA - 11991 Easy Problem from Rujia Liu?题意:问你序列中某个数v出现第k次时的位置。(序列长度小于10万)

UVA - 11991 Easy Problem from Rujia Liu?

题意:问你序列中某个数v出现第k次时的位置。(序列长度小于10万)

题解:

F1:

利用C++的STL

//使用map+pair做到二维数组暴力查找效果#include<iostream>#include<map>#include<cstdio>#include<utility>#include<cstring>using namespace std;map< pair<int,int>,int>mymap;int num[1001001];int main(){    int n,m;    while(scanf("%d%d",&n,&m)!=EOF)    {        memset(num,0,sizeof(num));        mymap.clear();        for(int i=1;i<=n;i++)        {            int x;            scanf("%d",&x);            num[x]++;            mymap.insert(make_pair(make_pair(x,num[x]),i));        }        for(int i=1;i<=m;i++)        {            int t,x;            scanf("%d%d",&t,&x);            printf("%d\n",mymap.find(make_pair(x,t))->second);        }    }    return 0;}


F2:排序之后再二分查找



热点排行