UVA11991线性查询
2014-01-18 17:10
260 查看
UVA11991线性查询 |
【题目描述】:给出一个包含n个整数的数组,你要回答若干次询问。每次询问两个整数k和v,输出从左到右第k个v的小标(从左到右是1....n) |
【算法分析】:Map和vector的使用 详细方法见代码,注意map的使用,这道题在UVA10635王子和公主中可以有新的应用。 |
【完整代码】:#include<iostream> #include<stdio.h> #include<string.h> #include<algorithm> #include<stdlib.h> #include<math.h> #include<queue> #include<vector> #include<map> #define MAXN 100000+5 #define MAXM 20000+5 #define oo 9556531 #define eps 0.000001 #define PI acos(-1.0)//这个精确度高一些 #define REP1(i,n) for(int i=0;i<=(n);i++) #define REP2(i,n) for(int i=1;i<=(n);i++) using namespace std; map<int ,vector<int> >Map;//后面的>不要连写 int n,m; int main() { // freopen("in","rb",stdin); // freopen("out","wb",stdout); while(cin>>n>>m) { Map.clear(); for(int i=1;i<=n;i++) { int k; cin>>k; if (!Map.count(k))//没查找到关键字 Map[k]=vector<int>(); Map[k].push_back(i); } for(;m;m--) { int x,p; cin>>p>>x; if(!Map.count(x) || Map[x].size() < p) cout<<"0"<<endl; else cout<<Map[x][p-1]<<endl;//注意存储个数 } } return 0; } |
【关键词】:vector和map组合 |
相关文章推荐
- Vector作为返回值时出现的问题
- 小波变换 完美通俗解读【转载】
- i++ 和 ++i 效率的分析以及自定义类型的自增/自减运算符重载实例
- [shell-命令] 摘要
- UVA1339仿射和换位密码
- ubuntu下安装与卸载软件方法-转载
- linux故障,无法启动的解决方法
- vector的erase函数
- UVA 10382喷水设施
- 赫夫曼编码
- 【OpenGL4.0】GLSL渲染语言入门与VBO、VAO使用:绘制一个三角形
- Fifa Ultimate Team Millionaire Trading Center - Launching Now!
- Yii Framework 开发教程(14) UI 组件 MaskedTextField示例
- sdut2164Binomial Coeffcients(组合数求模)
- Mac和Windows中常见中文字体的英文名称
- Cordova 3.3 开发环境搭建(视频)
- java学习笔记(一)
- XML
- Yii Framework 开发教程(13) UI 组件 ContentDecorator示例
- Yii Framework 开发教程(12) UI 组件 ClipWidget示例