码迷,mamicode.com
首页 > 其他好文 > 详细

uva 11991 Easy Problem from Rujia Liu?

时间:2017-10-09 22:27:41      阅读:97      评论:0      收藏:0      [点我收藏+]

标签:ack   clu   比较   ret   数据   int   scanf   push   解决   

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?

标签:ack   clu   比较   ret   数据   int   scanf   push   解决   

原文地址:http://www.cnblogs.com/kickit/p/7642927.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!