UVA 11991 求第k个数值为v的下标
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了UVA 11991 求第k个数值为v的下标相关的知识,希望对你有一定的参考价值。
给定一个数组,求第k个数值为v的下标
map<int,vector<int> > index
K:存放数值
V:存放该数值下标的集合
所以答案为 index[v][k-1]
判断是否有 该数值: index.count(v) > 0
#include<cstdio> #include<iostream> #include<queue> #include<string> #include<math.h> #include<stack> #include<cstdlib> #include<map> #include<vector> #include<algorithm> #include<cctype> #include<sstream> typedef long long ll; using namespace std; int a[100005]; int n,m; map<int,vector<int> > index; void input(){ index.clear(); for(int i = 0 ; i < n ; i ++){ int x; scanf("%d",&x); index[x].push_back(i+1); // vector存放下标 } } void solve(){ for(int i = 0 ; i < m ; i ++){ int k,v; // v的第k个 scanf("%d%d",&k,&v); if(index.count(v) == 0) printf("0\n"); // index.count(v):是否有v else if(k > index[v].size()) printf("0\n"); //index[v].size() :有几个v else printf("%d\n",index[v][k-1]); } } int main(){ while(scanf("%d%d",&n,&m) != EOF){ input(); solve(); } return 0; }
以上是关于UVA 11991 求第k个数值为v的下标的主要内容,如果未能解决你的问题,请参考以下文章
uva 11991 Easy Problem from Rujia Liu?
UVA 11991 Easy Problem from Rujia Liu? 简单STL
UVA 11991 Easy Problem from Rujia Liu?