博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
STL UVA 11991 Easy Problem from Rujia Liu?
阅读量:4365 次
发布时间:2019-06-07

本文共 1190 字,大约阅读时间需要 3 分钟。

 

题意:训练指南P187

分析:用vector存id下标,可以用map,也可以离散化用数组存(发现不用离散化也可以)

map

#include 
using namespace std;map
>mp;int main(void) { int n, m; while (scanf ("%d%d", &n, &m) == 2) { mp.clear (); for (int a, i=1; i<=n; ++i) { scanf ("%d", &a); if (!mp.count (a)) mp[a] = vector
(); mp[a].push_back (i); } while (m--) { int k, v; scanf ("%d%d", &k, &v); if (!mp.count (v) || mp[v].size () < k) puts ("0"); else printf ("%d\n", mp[v][k-1]); } } return 0;}

离散化

#include 
using namespace std;const int N = 1e5 + 5;vector
vec[N];int a[N], A[N];int main(void) { int n, m; while (scanf ("%d%d", &n, &m) == 2) { for (int i=1; i<=n; ++i) vec[i].clear (); for (int i=1; i<=n; ++i) { scanf ("%d", &a[i]); A[i] = a[i]; } sort (A+1, A+1+n); int nn = unique (A+1, A+1+n) - A - 1; for (int i=1; i<=n; ++i) { a[i] = lower_bound (A+1, A+1+nn, a[i]) - A; } for (int i=1; i<=n; ++i) { vec[a[i]].push_back (i); } for (int k, v, i=1; i<=m; ++i) { scanf ("%d%d", &k, &v); v = lower_bound (A+1, A+1+nn, v) - A; if (vec[v].size () < k) puts ("0"); else printf ("%d\n", vec[v][k-1]); } } return 0;}

  

 

转载于:https://www.cnblogs.com/Running-Time/p/5027060.html

你可能感兴趣的文章
2017-7-27-关键20小时,快速习得任何技能
查看>>
SHELL日志分析 实例一
查看>>
闭包函数
查看>>
ZOJ Monthly, November 2012 - I - Search in the Wiki
查看>>
TextSwitcher,译为文字转换器控件
查看>>
C# 多线程编程(3):线程池ThreadPool
查看>>
Mac 使用技巧
查看>>
Whu 1603——Minimum Sum——————【单个元素贡献、滑窗】
查看>>
Windows下安装PHP扩展及资源下载地址(memcached为例)
查看>>
Node.js安装与配置 -- 收录
查看>>
前端项目-代码开发规范(个人整理版)
查看>>
Win下安装RabbitMQ的cookie问题
查看>>
从网络上获取图片并保存在sdCard上
查看>>
oracle 体系结构解析
查看>>
linux命令:du 命令
查看>>
(Python编程)Pickle对象
查看>>
Ordering Tasks
查看>>
20175212童皓桢 《Java程序设计》第一周学习
查看>>
git branch 分支与合并
查看>>
转载:时间与时区(Time and Time Zone)
查看>>