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

本文共 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

你可能感兴趣的文章
Android——4.2 - 3G移植之路之 APN (五)
查看>>
Linux_DHCP服务搭建
查看>>
[SilverLight]DataGrid实现批量输入(like Excel)(补充)
查看>>
秋式广告杀手:广告拦截原理与杀手组织
查看>>
翻译 | 摆脱浏览器限制的JavaScript
查看>>
闲扯下午引爆乌云社区“盗窃”乌云币事件
查看>>
02@在类的头文件中尽量少引入其他头文件
查看>>
JAVA IO BIO NIO AIO
查看>>
input checkbox 复选框大小修改
查看>>
网吧维护工具
查看>>
BOOT.INI文件参数
查看>>
vmstat详解
查看>>
新年第一镖
查看>>
unbtu使用笔记
查看>>
OEA 中 WPF 树型表格虚拟化设计方案
查看>>
Android程序开发初级教程(一) 开始 Hello Android
查看>>
使用Gradle打RPM包
查看>>
“我意识到”的意义
查看>>
淘宝天猫上新辅助工具-新品填表
查看>>
再学 GDI+[43]: 文本输出 - 获取已安装的字体列表
查看>>