一道简单题(Uva 11991)
2018-03-16 16:30
162 查看
题意:给定k,v,求数组中第k个v的下标。
书上介绍了一种非常好的方法:map中的key为v,value为一个保存v从左到右依次出现的下标的vector不定长数组,每当查询的时候,直接输出即可!!!#include<bits/stdc++.h>
using namespace std;
map<int,vector<int> >a;
int main()
{
int n,m,x,k,v;
while(scanf("%d%d",&n,&m)==2)
{
a.clear();
for(int i=0;i<n;i++)
{
scanf("%d",&x);
if(!a.count(x))
a[x]=vector<int>();
a[x].push_back(i+1);
}
for(int i=0;i<m;i++)
{
scanf("%d%d",&k,&v);
if((int)a[v].size()<k||!a.count(v))
printf("0\n");
else printf("%d\n",a[v][k-1]);
}
}
return 0;
}
书上介绍了一种非常好的方法:map中的key为v,value为一个保存v从左到右依次出现的下标的vector不定长数组,每当查询的时候,直接输出即可!!!#include<bits/stdc++.h>
using namespace std;
map<int,vector<int> >a;
int main()
{
int n,m,x,k,v;
while(scanf("%d%d",&n,&m)==2)
{
a.clear();
for(int i=0;i<n;i++)
{
scanf("%d",&x);
if(!a.count(x))
a[x]=vector<int>();
a[x].push_back(i+1);
}
for(int i=0;i<m;i++)
{
scanf("%d%d",&k,&v);
if((int)a[v].size()<k||!a.count(v))
printf("0\n");
else printf("%d\n",a[v][k-1]);
}
}
return 0;
}
相关文章推荐
- [shuju]一道简单题 Uva 11991
- UVa 11991 一道简单题
- 【uva-10305】Ordering Tasks (拓扑排序中最简单的一道
- uva 11991 Easy Problem from Rujia Liu?(数据结构:map的简单用法)
- uva 11991 简单hash
- Dominating Patterns uvalive+一道简单的AC自动机
- 一道比较有意思的打印题(不需要会很多计算机语言知识,简单的C就行)
- UVA 11991 map应用
- Birthday Cake (uva10167简单暴力枚举)
- UVa 11388 - GCD LCM (简单数论)
- UVA 299 Train Swapping 列车交换 冒泡排序简单模拟
- UVA-11573 - Ocean Currents(简单搜索)
- UVA 572 - Oil Deposits(简单DFS)
- UVALive 7270 Osu! Master(简单水题)
- 关于一道简单的Java 基础面试题的剖析: short s1=1;s1 = s1 +1会报错吗?
- uva 784 Maze Exploration(简单dfs)
- 简单一道排序题,考倒多少读书人!——从华为一道面试题浅谈计算机专业在校大学生该如何学习专业课程,信心百倍挑战就业!
- 《算法竞赛-训练指南》第三章-2.2_UVa 11991
- UVa 11584 - Partitioning by Palindromes(简单DP)
- 简单一道排序题,考倒多少读书人