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?

uva11991

UVA 11991 Easy Problem from Rujia Liu? 简单STL

UVA 11991 Easy Problem from Rujia Liu?

Uva - 12050 Palindrome Numbers数论

uva 11991