uva11991

Posted shutdown113

tags:

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

B - Easy Problem from Rujia Liu?

题意:求v第k次出现的位置,如果出现次数少于k次,输出0.

分析:预处理将一个值所有出现的位置放在一个数组中。

代码:

技术分享图片
#include <map>
#include <vector>
#include <math.h>
#include <string>
#include <stdio.h>
#include <string.h>
#include <iostream>
#include <algorithm>

using namespace std;
#define ll long long
#define ull unsigned long long
#define cls(x) memset(x,0,sizeof(x))
#define clslow(x) memset(x,-1,sizeof(x))

const int mod=1e9+7;
const int maxn=1e5+100;

int n,m,tot;

int a[maxn];
map<int,int>pos;

struct Node{
    int val;
    vector<int>v;
};
Node node[maxn];

int main()
{
//    freopen("in.txt","r",stdin);
    while(scanf("%d%d",&n,&m)!=EOF)
    {
        tot=1;
        pos.clear();
        for(int i=1;i<=n;i++){
            scanf("%d",&a[i]);
            if(!pos[a[i]]){
                node[tot].v.clear();
                pos[a[i]]=tot;
                node[tot].val=a[i];
                node[tot++].v.push_back(i);
            }
            else{
                node[pos[a[i]]].v.push_back(i);
            }
        }

        for(int i=1;i<=m;i++){
            int k,v,ans;
            scanf("%d%d",&k,&v);
            if(node[pos[v]].v.size()<k||pos[v]==0)   ans=0;
            else    ans=node[pos[v]].v[k-1];
            printf("%d
",ans);
        }
    }
    return 0;
}
View Code

 

以上是关于uva11991的主要内容,如果未能解决你的问题,请参考以下文章

uva 11991

uva 11991 Easy Problem from Rujia Liu?

UVA 11991Easy Problem from Rujia Liu?STL

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

[uva11991]map和vector的入门

UVA 11991 Easy Problem from Rujia Liu?