UVa 11991 一道简单题
2017-03-11 14:19
232 查看
https://vjudge.net/problem/UVA-11991
题意:
给出一个包含n个整数的数组,你需要回答若干询问。每次询问两个整数k和v,输出从左到右第k个v的下标。
思路:
把每个数字所出现的下标存储在vector中。
刘汝佳的做法更妙一些。
题意:
给出一个包含n个整数的数组,你需要回答若干询问。每次询问两个整数k和v,输出从左到右第k个v的下标。
思路:
把每个数字所出现的下标存储在vector中。
#include<iostream> #include<string> #include<cstring> #include<algorithm> #include<vector> #include<map> using namespace std; const int maxn = 1000000 + 5; int n, m; vector<int> s[maxn]; int main() { //freopen("D:\\txt.txt", "r", stdin); while (cin >> n >> m) { int x; for (int i = 0; i < maxn; i++) s[i].clear(); for (int i = 1; i <= n; i++) { cin >> x; s[x].push_back(i); } int k, v; for (int i = 0; i < m; i++) { cin >> k >> v; if (k <= s[v].size()) cout << s[v][k - 1] << endl; else cout << '0' << endl; } } }
刘汝佳的做法更妙一些。
#include<iostream> #include<string> #include<cstring> #include<algorithm> #include<vector> #include<map> using namespace std; int n, m; map <int, vector<int> > a; int main() { //freopen("D:\\txt.txt", "r", stdin); while (cin >> n >> m) { a.clear(); int x; for (int i = 1; i <= n; i++) { cin >> x; if (!a.count(x)) a[x] = vector<int>(); a[x].push_back(i); } int k, v; for (int i = 0; i < m; i++) { cin >> k >> v; if (k <= a[v].size()) cout << a[v][k - 1] << endl; else cout << '0' << endl; } } }
相关文章推荐
- 一道简单题(Uva 11991)
- [shuju]一道简单题 Uva 11991
- 【uva-10305】Ordering Tasks (拓扑排序中最简单的一道
- uva 11991 Easy Problem from Rujia Liu?(数据结构:map的简单用法)
- uva 11991 简单hash
- Dominating Patterns uvalive+一道简单的AC自动机
- 一道简单shell编程
- 简单一道排序题,考倒多少读书人!
- sony招聘中的一道简单的C程序填空题
- 一道简单的机试题,考倒多少人?
- 一道简单的ACM题目学到的东西
- 一道简单的面试题目:输入1234输出1_2_3_4
- 张某上黑板做一道非常简单的题
- 一道简单的笔试题
- 解析“一道考遍东北三省和青岛没有一人做出来的简单题目 ”
- 一道看似简单的ACM题检验你的基本功
- 有一道十分简单的数学题,但是我就是没想出来,不得以发在首页求助
- 一道简单而又容易出错的题目
- 一道简单数学题!10人有11个人算错!!
- 一道比较简单的Google面试题