UVa 11991:Easy Problem from Rujia Liu?(STL练习,map+vector)
Easy Problem from Rujia Liu?
Though Rujia Liu usually sets hard problems for contests (for example, regional contests like Xi'an 2006, Beijing 2007 and Wuhan 2009, or UVa OJ contests like Rujia Liu's Presents 1 and 2), he occasionally sets easy problem (for example, 'the Coco-Cola Store' in UVa OJ), to encourage more people to solve his problems :D
Given an array, your task is to find the k-th occurrence (from left to right) of an integer v. To make the problem more difficult (and interesting!), you'll have to answer m such queries.
Input
There are several test cases. The first line of each test case contains two integers n, m(1<=n,m<=100,000), the number of elements in the array, and the number of queries. The next line contains n positive integers not larger than 1,000,000. Each of the following m lines contains two integer k and v (1<=k<=n, 1<=v<=1,000,000). The input is terminated by end-of-file (EOF). The size of input file does not exceed 5MB.
Output
For each query, print the 1-based location of the occurrence. If there is no such element, output 0 instead.
Sample Input
8 4
1 3 2 2 4 3 2 1
1 3
2 4
3 2
4 2
Output for the Sample Input
2
0
7
0
Rujia Liu's Present 3: A Data Structure Contest Celebrating the 100th Anniversary of Tsinghua University
Special Thanks: Yiming Li
Note: Please make sure to test your program with the gift I/O files before submitting!
STL练习,map+vector。
题意是“给出一个包含n个整数的数组,你需要回答若干次询问。每次询问两个整数k和v,输出从左到右第k个v的下标(数组下标从左到右编号为1~n)”。
很显然,这是一个二维的结构,我们用下标代表要查询的数v,a[v][k]就代表第k次出现v的下标值。首先我们会想到开一个二维数组,但是这样空间消耗太大。不如利用C++STL库提供的数据结构来存储,在这里我们可以用 map+vector,申请的变量为为map <int,vector<int> > a。它的好处是存储空间是动态改变的,不用一开始就创建很大的数组来存储。
代码:
#pragma warning (disable:4786)
#include <stdio.h>
#include <map>
#include <vector>
using namespace std;
int main()
{
int i,n,m,x,k,v;
while(scanf("%d%d",&n,&m)!=EOF){
map <int,vector<int> > a;
for(i=;i<n;i++){ //预处理
scanf("%d",&x);
if(!a.count(x)) //x一次没有出现过
a[x] = vector<int>();
a[x].push_back(i+); //从0开始push
}
//查询
for(i=;i<m;i++){
scanf("%d%d",&k,&v);
if(a.size()<v && a[v].size()<k)
printf("0\n");
else
printf("%d\n",a[v][k-]); //因为是从0开始push,所以k-1
}
}
return ;
}
Freecode : www.cnblogs.com/yym2013
UVa 11991:Easy Problem from Rujia Liu?(STL练习,map+vector)的更多相关文章
- uva 11991 - Easy Problem from Rujia Liu?(STL)
		
option=com_onlinejudge&Itemid=8&page=show_problem&problem=3142" target="_blank ...
 - [UVA] 11991 - Easy Problem from Rujia Liu? [STL应用]
		
11991 - Easy Problem from Rujia Liu? Time limit: 1.000 seconds Problem E Easy Problem from Rujia Liu ...
 - CJOJ 2485  UVa 11991 生日礼物 / UVa 11991 Easy Problem from Rujia Liu?
		
CJOJ 2485 UVa 11991 生日礼物 / UVa 11991 Easy Problem from Rujia Liu? Description (原题来自刘汝佳<训练指南>Pa ...
 - UVA 11991 Easy Problem from Rujia Liu?(vector map)
		
Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for example, ...
 - UVA 11991	Easy Problem from Rujia Liu?【STL】
		
题目链接: option=com_onlinejudge&Itemid=8&page=show_problem&problem=3142">https://uv ...
 - STL UVA 11991 Easy Problem from Rujia Liu?
		
题目传送门 题意:训练指南P187 分析:用vector存id下标,可以用map,也可以离散化用数组存(发现不用离散化也可以) map #include <bits/stdc++.h> u ...
 - uva 11991 Easy Problem from Rujia Liu?  vector+map
		
水题 学习一下数据的存储方法. #include<iostream> #include<cstdio> #include<cstdlib> #include< ...
 - 11991 - Easy Problem from Rujia Liu?(的基础数据结构)
		
UVA 11991 - Easy Problem from Rujia Liu? 题目链接 题意:给一个长度n的序列,有m询问,每一个询问会问第k个出现的数字的下标是多少 思路:用map和vector ...
 - uva--11991 - Easy Problem from Rujia Liu?(sort+二分  map+vector  vector)
		
11991 - Easy Problem from Rujia Liu? Though Rujia Liu usually sets hard problems for contests (for e ...
 
随机推荐
- 织梦(dedecms) 5.7 /plus/car.php sql注入0day
			
测试方法: @Sebug.net dis本站提供程序(方法)可能带有攻击性,仅供安全研究与教学之用,风险自负! <?php $host=$argv[1]; $path=$argv[2]; $ ...
 - 改变placeholder颜色
			
/* WebKit browsers */ ::-webkit-input-placeholder { color: red; text-overflow: ellipsis; } /* Mozill ...
 - TFS2008解除独占式锁定文件命令(转载)
			
使用场景:如果项目团队成员A对项目某个文件以独占式方式签出,恰好那天该成员A没有来上班而成员需要对此文件进入修改并check in,这时需要先把A对该文件的锁定解除.没有IDE可以使用,只能使用下面的 ...
 - commons-logging和Log4j 日志管理/log4j.properties配置详解
			
commons-logging和Log4j 日志管理 (zz) 什么要用日志(Log)? 这个……就不必说了吧. 为什么不用System.out.println()? 功能太弱:不易于控制.如果暂时不 ...
 - ASP.NTE 5 Target framework dnx451 and dnxcore50(转)原文:http://www.cnblogs.com/xishuai/p/aspnet5-target-framework-dnx451-and-dnxcore50.html
			
中文不知如何定义标题,所以干脆就直接贴出关键字,在 ASP.NTE 5 项目的 project.json 配置文件中,会有这样的定义: "frameworks": { " ...
 - 优化sql语句
			
关于数据库sql语句的优化? 这个链接可以看 涉及数据库的操作基本都是变得很慢了, 所以通常说数据库是程序的瓶颈 测试/优化数据库/sql的方法: 把order排序.where条件等一个一个去除法来做 ...
 - Model backing a DB Context has changed; Consider Code First Migrations
			
Model增加一个字段,数据库对应的也手动添加了字段但是运行时报错 The model backing the 'TopLogDbContext' context has changed since ...
 - Numeric Validation
			
Numeric Inputs Numbers are even easier to validate than text. For number input types, the HTML5 spec ...
 - [POJ1383]Labyrinth
			
[POJ1383]Labyrinth 试题描述 The northern part of the Pyramid contains a very large and complicated labyr ...
 - OJ 1188 全排列---康托展开
			
题目描述 求n的从小到大第m个全排列(n≤20). 输入 n和m 输出 输出第m个全排列,两个数之间有一空格. 样例输入 3 2 样例输出 1 3 2 #include<cstdio> # ...