uva 11991 Easy Problem from Rujia Liu?

Posted Omz

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了uva 11991 Easy Problem from Rujia Liu?相关的知识,希望对你有一定的参考价值。

https://vjudge.net/problem/UVA-11991

题意:

给出n个数字,以及m个询问,每次问v的第k次出现的下标,如果不存在则输出0。

思路:

如果数据范围比较小,那么二维数组date[v][k]应该可以解决这个问题,但是数据比较大,兰儿我们可以这样造数据结构,用map和vector就可以做到。

第一次知道有map<int,vector<int> > 这种操作orz!

代码:

 1 #include <stdio.h>
 2 #include <map>
 3 #include <vector>
 4 using namespace std;
 5 
 6 map<int,vector<int> > a;
 7 
 8 int main()
 9 {
10     int n,m;
11 
12     while (scanf("%d%d",&n,&m) != EOF)
13     {
14         a.clear();
15 
16         for (int i = 0;i < n;i++)
17         {
18             int x;
19 
20             scanf("%d",&x);
21 
22             if (a.count(x)) a[x].push_back(i+1);
23             else
24             {
25                 a[x] = vector<int> ();
26 
27                 a[x].push_back(i+1);
28             }
29         }
30 
31         for (int i = 0;i < m;i++)
32         {
33             int k,v;
34 
35             scanf("%d%d",&k,&v);
36 
37             if (!a.count(v) || a[v].size() < k) printf("%d\n",0);
38             else printf("%d\n",a[v][k-1]);
39         }
40     }
41 
42     return 0;
43 }

 

以上是关于uva 11991 Easy Problem from Rujia Liu?的主要内容,如果未能解决你的问题,请参考以下文章

UVA 11991 Easy Problem from Rujia Liu?

UVA 11991 Easy Problem from Rujia Liu? 简单STL

uva 11991

uva11991

UVA 11991 求第k个数值为v的下标

[uva11991]map和vector的入门