7713: 离散化去重 map
描述
“离散化”是指把一个无穷大的集合映射到一个有限的集合中。
如有n个整数,其中可能存在相同的数,现在需要你将其去重后得到的m个数用1~m来表示,同时保持原始的大小顺序不变,即在不改变数据相对大小的条件下,对数据进行相应的缩小。
如:
原数据:1, 999, 100000, 15
处理后:1, 3, 4, 2
同时给出若干查询,查询某个整数x被表示为1~m中的什么数?
输入
第一行为正整数n和q(1<=n<=100000,1<=q<=100000),表示原始数据个数和查询次数;
第二行为空格隔开的n个整数。
第三行为q个空格隔开的整数,每个整数为待查询的值。
输出
对于每次查询,输出被映射后的值,每行一个。
如果查询的值不存在,输出None
样例输入
10 3
1 2 2 3 5 5 8 9 9 10
2 9 11
样例输出
2
6
None
使用map有种用现代科技打古代人的感觉。。
#include<bits/stdc++.h> using namespace std; typedef long long ll; const int N = 1e3+10,inf = 0x3f3f3f3f; int main() { int n,m,i; cin >> n >> m; map<int,int> s,mp; map<int,int>::iterator it; for(int i = 1; i <= n; i++) { int x; scanf("%d",&x); s[x] = 1; } for(it = s.begin(),i = 1;it != s.end(); it++,i++) { mp[it->first] = i; } while(m--) { int x; scanf("%d",&x); if(mp[x]) printf("%d\n",mp[x]); else puts("None"); } return 0; }
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 25岁的心里话
· 按钮权限的设计及实现
2022-10-15 周六1900C++班级2022-10-15 do-while/调试/班级测试
2022-10-15 江南信息学第六周练习20221014
2022-10-15 周六900C++2022-10-15 深搜