首页 > 代码库 > Uva 11991 Easy Prblem from Rujia Liu ?
Uva 11991 Easy Prblem from Rujia Liu ?
【题意讲解】
本题讲的是给定一组数据,让你输出第k个v的下标。采用一般的方法本题是可以做出来的(数据(k,v)量较小)。对于数据量较大的情况那么这种方法就不适用了(会浪费大量能够空间)。那么我可以考虑使用一种叫map容器的方法。采用动态存储的方法,不浪费
空间。
【map容器简介】
见c++map容器 简介
【本题代码】
1 #include<iostream> 2 #include<vector> 3 #include<map> 4 using namespace std; 5 map<int ,vector<int> >a;//第一个int是代表关键字的意思,第二个vector<int>代表关键字为第一个int的不定数组 6 int main() 7 { 8 int n,m,x,y; 9 while(scanf("%d%d",&n,&m)==2)10 {11 a.clear();//清除map 容器中原有的内容 12 for(int i=0;i<n;i++)13 {14 scanf("%d",&x);15 if(!a.count(x)) //如果关键字不存在那么count函数 返回值为0;否则为1 16 a[x]=vector<int>();//动态分配vector 17 a[x].push_back(i+1);//把数据压入数组a[x]中,此时的a[x]数组相当于 二纬数组 18 }19 }20 while(m--)21 {22 scanf("%d%d",&x,&y);23 if(!a.count(y) ||a[y].size()<x) printf("0\n");24 else printf("%d\n",a[y][x-1]);25 }26 return 0;27 }
Uva 11991 Easy Prblem from Rujia Liu ?
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。