首页 > 代码库 > UVA11991Easy Problem from Rujia Liu?(map + vector)
UVA11991Easy Problem from Rujia Liu?(map + vector)
题目:UVA11991Easy Problem from Rujia Liu?(map + vector)
题目大意:给你N个数字,这些数字可能有重复,然后M个查询,问第k个V的下标是,如果不存在这样的数字输出0。
解题思路:用map来将每个数字和下标做一一映射,但是因为相同数字会出现多次,所以需要一个数组,并且长度不一定,所以用vector。
代码:
#include <cstdio> #include <map> #include <vector> using namespace std; map<int , vector<int> > vis;//不要连写 int main () { int n, m; int v, k; while (scanf ("%d%d", &n, &m) != EOF) { vis.clear();//清空 for (int i = 1; i <= n; i++) { scanf ("%d", &v); if (!vis.count(v)) vis[v] = vector<int> ();//创建数组 vis[v].push_back(i); } for (int i = 0; i < m; i++) { scanf ("%d%d", &k, &v); if (!vis.count(v) || vis[v].size() < k) printf ("0\n"); else printf ("%d\n", vis[v][k - 1]); } } return 0; }
UVA11991Easy Problem from Rujia Liu?(map + vector)
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。